在IOS中通过C代码执行对sqlite的操作,在这个过程中需要对const char * 类型和NSString类型做转换。转换方式: const char *sql = [nsString UTF8String];
NSString *string = [[NSString alloc] initWithUTF8String: sql];
对sqlite操作的基本步骤;
1.定义数据库名称,获取数据库存取路径
通过NSFIleManager 调整路径,获取路径string
得到数据库路径,为了能够执行sqlite对应的函数,需要将NSString类型的dataPath变量转换为 const char*类型的dbPath,
然后通过sqlite3_open打开数据库(如果数据库文件不存在,则会在制定路径新建对应的文件)
如果打开成功就可以通过sqlite的API对数据库进行操作,如上图的 sqlite3_exec(这个函数中包含多个参数 如:路径,数据库名称等),这个函数执行完毕后,会返回一个状态类型,可以通过状态类型判断,执行是否正常,如果没有出现预料的结果,则可以通过将在sql执行过程的的errMsg打印出来,查找问题 。
语法为: NSLog([[NSString alloc] initWithUTF8STring: errMsg]) ; 这样就可以判断是否是在执行sql过程中出现的异常。
如果是对数据库执行正删改操作,则需要预先定义变量:sqlite3_stmt *statment;然后再执行插入操作时,需要将这个statement当做参数传递进去(相当于这次操作的唯一标识)
这个只是与准备,接着真正执行sql,在sqlite3_step执行时需要传入参数statment,就可以直接执行这个statment对应的sql
在执行sqlite3_step(statment)时,可以根据这个函数调用返回值,得到当前sql执行的不同状态。上图中档sqlite3_step(
statement) == SQLITE_DONE时,说明sql执行成功,可以做一些提示处理。
在下图中如果
sqlite3_step(
statement) == SQLITE_ROW时 说明查询到一条数据,则可以通过下面的方式获取并进行显示(如果有多行数据则可以进行while循环判断是否 == SQLITE_DONE),并执行操作。