sqlite各函数详解

1.sqlite3_open([database_path UTF8String], &db)

 database_path是要打开数据库文件的路径,是oc语言,要转化为c字符串。
&db存放数据库连接的句柄。

2.sqlite3_prepare_v2

NSString *sqlQuery = [NSString stringWithFormat:
                  @"SELECT * FROM %@",TABLENAME];
sqlite3_stmt * statement;
 if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {
   // db打开的数据库句柄;[sqlQuery UTF8String]要执行的sql语句;-1参数sql的字节数,为负则sql语句从开始到结束;&statement:sqlite3_step执行的变异好的准备语句的指针,有错位null;nil:指向sql语句中为执行的部分。
      while (sqlite3_step(statement) == SQLITE_ROW) {
      //sqlite3_step用于执行sqlite_prepare的准备语句。这个语句执行到结果的第一行。如果继续执行到第二行,需再次调用这个语句。[如没有返回值的语句insert、update、delete,只执行一次]
      //SQLITE_ROW查询时产生的结果,可以使用数据访问函数获得数据,执行sqlite3_step获取下一行数据。

      char *name = (char*)sqlite3_column_text(statement, 1);
        //sqlite3_column是前缀,用于获得sqlite3_step结果集中的列;第一个参数为sqlite_prepare返回的prepared statement对象的指针,第二个参数是返回的列的索引,最左列为0,行的列数用sqlite3_clumn_count()获得。

        NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];

        int age = sqlite3_column_int(statement, 2);

        char *address = (char*)sqlite3_column_text(statement, 3);
        NSString *nsAddressStr = [[NSString alloc]initWithUTF8String:address];

        NSLog(@"name:%@  age:%d  address:%@",nsNameStr,age, nsAddressStr);
    }
}else{
    NSLog(@"select error:%@",sqlQuery);

}

3.sqlite_finalize销毁被sqlite_prepare创建的准备语句。
4.sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err)

 db描述的是数据库句柄;[sql UTF8String]要执行的SQL语句;第三个参数为回调函数;第四void *回调函数的第一个参数;err&错误信息,如果没有SQL问题则值为NULL

sqlite3_exec包裹了先前的sqlite3_prepare(),sqlite3_step,sqlite_finalize,可用简单的代码执行多条sql 语句。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的修养

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值