数据库操作之SQLite

选用SQLite 需要引入动态库libsqlite3.tbd ,在相应的操作类文件前导入

#import<sqlite3.h>//由于是非三方框架,所以选用尖括号

在@interface中创建sqlite对象   ” sqlite3 *sql  “

1、创制数据仓库,使用该办法

sqlite3_open(const char *filename, sqlite3 **ppDb)

    参数1:const char *filename 存放路径

    参数2:sqlite3 **ppDb sqlite对象的双重指针,即“&sql”

    参数3:返回SQLITE_OK

2、创建数据库表格,使用以下措施

sqlite3_exec(sqlite3 *, const char *sql, int (*callback)(void *,
int, char **, char **), void *, char **errmsg)  
//前边五个参数如不需要可填null

参数一:sqlite3 * sqlite对象

参数二:const char *sql      char*类型的sql语句。例如  “create table
if not exists 表名称 (name text primary key,age integer,lastname text)” 
,其中name 为主键,唯一,假设采纳同一name
则会报error,判断是否存在同名的user表格 ,假诺不设有就创建,否之不创制

参数三:int (*callback)(void *, int, char **, char **)
执行exec时,每查到一条记下,会调用这么些回调函数

       参数1:void*  传递来的数据

       参数2:int 一条记下有些许个字段(即这条记下的列数)

       参数3:char** 查询出来的数据(即:每个字段的值
)。它是个一维数组(不要认为是2维数组),每个元素都是一个字符串 char *
值,是一个字段内容

       参数4:char** 每一个字段的字段名称(即:列名),与 参数三 对应

参数四:void *
传递数据,能够是任意值。会传送到回调函数callback,作为它的率先个参数传入

参数五:char **errmsg 错误信息

3、数据库修改

    1)更新

sql语句: update  表名 set name = ”hello friend“ where 条件
例如:”update user set name=”hello friend” where age = 12″ 假设 age =
12,就修改对应的name值为hello friend

调用sqlite3_exec 方法

   2)删除

sql语句 :delete from 表名 where 条件 例如:”delete from user where
name=”hello friend”

    3)插入

sql语句:insert into 表名 values (1,”hello world”,12)

4、数据查询

调用该办法,实现查询,重临职位SQLITE_OK,查询到的值将会
存入sqlite3_stmt **ppStmt 参数中。

sqlite3_prepare_v2(sqlite3 *db, const char *zSql, int nByte,
sqlite3_stmt **ppStmt, const char **pzTail)

//sqlite3 *db sqlite对象(句柄)

//const char *zSql  sql语句 select 列名(*代表全体)from 表名
例如”select * from user”

//int nByte  sql语句的最大字节长度,-1意味着无界定

//sqlite3_stmt **ppStmt  外部表明的sqlite3_stmt 对象的地点例如”&ppStmt”

//const char **pzTail  指向zSpl未利用的一些/* OUT: Pointer to unused
portion of zSql */

例如

/*sqlite3_stmt *stmt;

sqlite3_prepare_v2(sql, “select * from user”, -1, &stmt,NULL);*/

遍历打印,其中sqlite3_step(sqlite3_stmt *)为迭代格局,其SQLITE_ROW=
100 ,其方法会重临一个状态码,与SQLITE_ROW对应

方法

sqlite3_column_int(sqlite3_stmt *, int iCol)//参数int iCol
为相应的列数,从0最先 ,重临为int型数据

sqlite3_column_text(sqlite3_stmt *, int iCol)//同上,返回const
unsigned char *型数码,需举行转发为char* 类型,后续转NSString

网站地图xml地图