Sqlite 简单使用方法
Sqlite 简单使用方法 1.首先要添加libsqlite3.dylib 库。在添加库的时候,你会发现有个libsqlite3.dylib 还有一个libsqlite3.0.dylib。这样你就会疑问,两个的区别。这里介绍一下:实际上libsqlite3.dylib本身是个链接,它指向了libsqlite3.0.dylib。libsqlite3.dylib总是指向最新的sqlite动态库。 2.在view中引入框架(2种方法)。
(1)#import<sqlite3.h> (2)#import"/usr/include/sqlite3.h"
sqlite3*database; 3.sqlite数据库是文件数据库,是保存在文件系统中的。 在Documents下创建数据库(路径) 。
NSArray*documentsPath =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMaskYES); NSString*databaseFilePath = [[documentsPathobjectAtIndex:0]stringByAppendingPathComponent:@"mydb"]; 4.打开数据库
if(sqlite3_open([databaseFilePathUTF8String],&database) ==SQLITE_OK) { NSLog(@"open sqlite db ok." } 5. 建表语句char*errorMsg; constchar*createSql ="create table if not exists persons(id integer primary key autoincrement,name text)"; if(sqlite3_exec(database,createSql,NULL,&errorMsg) ==(@"create ok"6. 向表中插入记录 const*insertSql ="insert into persons (name) values ('zhangsan')"(@"insert ok." }else{ NSLog(@"error:%s",errorMsg); sqlite3_free(errorMsg); 7. 查询结果 *selectSql ="select id,name from persons" sqlite3_stmt*statement; sqlite3_prepare_v2(1,&statement,159)">nil) ==(@"select ok" while(sqlite3_step(statement) ==SQLITE_ROW) { int_id =sqlite3_column_int(statement,0);
char*name = (char*)sqlite3_column_text(statement,211)">1); NSString*nsAddressStr = [[NSStringalloc]initWithUTF8String:name]; @"id:%i name:%@",_id,nsAddressStr); } } 8.关闭数据库 sqlite3_close(database sqlite3 *database;数据库句柄 sqlite3_stmt 用于保存编译好的sql语句 sqlite3_open() 打开数据库,没有的时候创建数据库 sqlite3_exec() 执行非查询的sql语句 sqlite3_prepare() 准备sql语句,执行select语句 sqlite3_step() 再调用sqlite3_prepare后,使用这个函数在记录集中移动 sqlite3_finalize() 释放sql资源 sqlite3_close() 关闭数据库 sqlite3_bind_int(stmt,1,1); //绑定第一个int参数 sqlite3_bind_text(stmt,2,[? UTF8String],-1,SQLITE_TRANSIENT);//绑定第二个字符串参数 记录集中获取字段 sqlite3_column_int() 取int类型数据 sqlite3_column_text() 取text型数据 sqlite3_column_blob() 取blob型数据
#define SQLITE_OK 0/* Successful result */ /* beginning-of-error-codes */ #define SQLITE_ERROR 1/* SQL error or missing database */ #define SQLITE_INTERNAL 2/* Internal logic error in SQLite */ #define SQLITE_PERM 3/* Access permission denied */ #define SQLITE_ABORT 4/* Callback routine requested an abort */ #define SQLITE_BUSY 5/* The database file is locked */ #define SQLITE_LOCKED 6/* A table in the database is locked */ #define SQLITE_NOMEM 7/* A malloc() failed */ #define SQLITE_READONLY 8/* Attempt to write a readonly database */ #define SQLITE_INTERRUPT 9/* Operation terminated by sqlite3_interrupt()*/ #define SQLITE_IOERR 10/* Some kind of disk I/O error occurred */ #define SQLITE_CORRUPT 11/* The database disk image is malformed */ #define SQLITE_NOTFOUND 12/* NOT USED. Table or record not found */ #define SQLITE_FULL 13/* Insertion failed because database is full */ #define SQLITE_CANTOPEN 14/* Unable to open the database file */ #define SQLITE_PROTOCOL 15/* NOT USED. Database lock protocol error */ #define SQLITE_EMPTY 16/* Database is empty */ #define SQLITE_SCHEMA 17/* The database schema changed */ #define SQLITE_TOOBIG 18/* String or BLOB exceeds size limit */ #define SQLITE_CONSTRAINT19/* Abort due to constraint violation */ #define SQLITE_MISMATCH 20/* Data type mismatch */ #define SQLITE_MISUSE 21/* Library used incorrectly */ #define SQLITE_NOLFS 22/* Uses OS features not supported on host */ #define SQLITE_AUTH 23/* Authorization denied */ #define SQLITE_FORMAT 24/* Auxiliary database format error */ #define SQLITE_RANGE 25/* 2nd parameter to sqlite3_bind out of range */ #define SQLITE_NOTADB 26/* File opened that is not a database file */ #define SQLITE_ROW 100/* sqlite3_step() has another row ready */ #define SQLITE_DONE 101/* sqlite3_step() has finished executing */ 当调用sqlite3_prepare_v2() 函数的时候,是一个将SQL语句编译为sqlite内部一个结构体(sqlite3_stmt). 该结构体中包含了将要执行的的SQL语句的信息. 通常情况下,应该是返回0。还有一些时候是返回其他数值。 我以1为例,简单介绍一下错误解决的思路和方法: 1/* SQL error or missing database */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |