我们需要使用语句
#import ”sqlite3.h”引入 sqlite3 头文件,而且需要定义 sqlite3*成员变量
db。NoteDAO.m 中的 createEditableCopyOfDatabaseIfNeeded 方法:
1
- (void)createEditableCopyOfDatabaseIfNeeded {
2
NSString *writableDBPath = [self applicationDocumentsDirectoryFile];
3
if (sqlite3_open([writableDBPath UTF8String], &db) != SQLITE_OK) { ①
4
sqlite3_close(db); ②
5
NSAssert(NO,@”
”
数据库打开失败。
);
6
} else {
7
char *err;
8
NSString *createSQL = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS
Note
9
(cdate TEXT PRIMARY KEY, content TEXT);"]; ③
10
if (sqlite3_exec(db,[createSQL UTF8String],NULL,NULL,&err) != SQLITE_OK) { ④
11
sqlite3_close(db); ⑤
12
NSAssert1(NO, @”建表失败, %s”, err); ⑥
13
}
14
sqlite3_close(db); ⑦
15
}
16
}
createEditableCopyOfDatabaseIfNeeded 方法用于创建数据库,第 1 步打开数据库,代码①行,
语句是
sqlite3_open([writableDBPath UTF8String], &db),sqlite3_open 函数的第 1 个参数是
数据库文件完整的路径,但是需要注意的是在
SQLite3 函数中接受的是 char*的 UTF-8 类型
数据,需要将
NSString*转换为 UTF-8,使用 NSString*的 UTF8String 方法可以转换,
sqlite3_open 函数第 2 个参数 sqlite3 指针变量 db 的地址。该函数的返回值是 int 类型,在
SQLite3 中定义了很多常量,返回值等于常量 SQLITE_OK 则说明操作成功。
第
2 步执行建表语句,代码第④行,语句 sqlite3_exec(db,[createSQL
UTF8String],NULL,NULL,&err)执行建表的 SQL。第 1 个参数是 sqlite3 指针变量 db 的地址,
第
2 个参数是要执行的 sql 语句,第 3 个参数是要回调函数,第 4 个参数是要回调函数的参
数,第
5 个参数是执行出错的字符串。建表 SQL 语句是,如果表 Note 存在这不用创建。
CREATE TABLE IF NOT EXISTS Note (cdate TEXT PRIMARY KEY, content TEXT)
第
3 步使用 sqlite3_close 函数释放资源,代码②、⑤、⑦行所示,在数据库打开失败、Create
Table 执行失败和成功执行完成时候调用。原则上无论正常结束还是异常结束必须使用
sqlite3_close 函数释放资源。
查询数据
数据查询一般会带有查询条件,这个使用
SQL 语句 where 子句很容易实现,但是在程序中
需要动态绑定参数给
where 子句。执行查询数据步骤如下:
1、使用 sqlite3_open 函数打开数据库;
2、使用 sqlite3_prepare_v2 函数预处理 SQL 语句;
3、使用 sqlite3_bind_text 函数绑定参数;
找软件资料,就到一览软件文库