background image

我们需要使用语句

#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 函数绑定参数;

                   找软件资料,就到一览软件文库

http://wk.yl1001.com/rj/