注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

旷世的忧伤

不与夏虫语寒,不与曲人语道,因为生命缺乏言说的条件......

 
 
 

日志

 
 

Sqlite3 C语言API简介  

2014-11-06 16:56:50|  分类: 数据库操作 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1. 打开数据库:
原型:

int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);

sqlite3_open函数打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。SQLite 对象是一个非常复杂的数据结构。
如果 filename 参数是 NULL 或 ':memory:',那么 sqlite3_open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。
如果文件名 filename 不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3_open() 将创建一个新的命名为该名称的数据库文件并打开。

2. 对SQL语句的操作:
原型:

int sqlite3_exec(
  sqlite3*,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);

各个参数的意义为:
       -- sqlite3     描述的是数据库句柄
        --sql            要执行的SQL语句
        --callback  回调函数
        --void *       回调函数的第一个参数
        --errmsg     错误信息,如果没有SQL问题则值为NULL

回调函数式结构较为复杂,其原型为:

int callback(void *params,int column_size,char **column_value,char **column_name)

每一个参数意义如下:
        --params是sqlite3_exec   传入的第四个参数
        --column_size                    是结果字段的个数
        --column_value                  是返回记录的一位字符数组指针
        --column_name                  是结果字段的名称
sqlite3_exec() 程序解析并执行由 sql 参数所给的每个命令,直到字符串结束或者遇到错误为止。
通常情况下callback在select操作中会使用到,尤其是处理每一行记录数。返回的结果每一行记录都会调用下“回调函数”。 如果回调函数返回了非0,那么sqlite3_exec将返回SQLITE_ABORT,并且之后的回调函数也不会执行,同时未执行的子查询也不会继续执行。

对于更新、删除、插入等不需要回调函数的操作,sqlite3_exec的第三、第四个参数可以传入0或者NULL。

通常情况下sqlite3_exec返回SQLITE_OK=0的结果,非0结果可以通过errmsg来获取对应的错误描述。

3. 关闭数据库:
原型:

sqlite3_close(sqlite3*)

该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完成。
如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息。

4. 事物处理:
事务(Transaction)是一个对数据库执行工作单元。事务(Transaction)是以逻辑顺序完成的工作单位或序列,可以是由用户手动操作完成,也可以是由某种数据库程序自动完成。

事务(Transaction)是指一个或多个更改数据库的扩展。例如,如果您正在创建一个记录或者更新一个记录或者从表中删除一个记录,那么您正在该表上执行事务。重要的是要控制事务以确保数据的完整性和处理数据库错误。

进行事物处理可以提高对数据库操作的效率。所以可以把许多的 SQLite 查询联合成一组,把所有这些放在一起作为事务的一部分进行执行。

开始事务处理:

begin 或 begin transaction


结束事物处理:(把事物调用的更改保存到数据库)

commit 或 end 或 end transaction


运用以上四点便可简单高效的运用C语言操作sqlite数据库。

参考:
http://www.w3cschool.cc/sqlite/sqlite-c-cpp.html
http://www.blogjava.net/xylz/archive/2012/09/25/388519.html
  评论这张
 
阅读(7)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018