sqlite c 语言

 

一.使用流程

要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll文件放到当前目录下,就完成配置可以使用sqlite了。

使用的过程根据使用的函数大致分为如下几个过程:

//预编译方法:

// 创建数据库对象
sqlite3_open()
// 创建预编译对象       占位符只能是数据,不参是数据段名
sqlite3_prepare()

while(1)
{
    //绑定
    sqlite3_bind_int();  //绑定从1开始
    
    while(SQLITE_ROW == sqlite3_step())
    {
        char *p= sqlite3_column_text()
         输入p
    }
     sqlite3_reset();
}
//
sqlite3_finalize()
sqlite3_close()


 

SQLite的sqlite3_column_blob函数

SQLite3利用函数sqlite3_column_blob来返回blob字段的内容的指针,并通过sqlite3_column_bytes来返回对应该字段的长度。

只是一直有一个疑问就是通过sqlite3_column_blob返回的二进制blob内容的内存是谁来释放,是由SQLite内部还是用调用者来释放。

后来仔细观察了内存变化发现,

sqlite3_column_blob函数会预先分配一块内存,

每次调用sqlite3_step然后sqlite3_column_blob字段内容的时候,都会在这一个指定的空间内写入,

所以调用者不必去管理者块内存,也因此,每次sqlite3_column_blob返回的二进制内容都需重新写去到调用者需要的地方去,否则下次再有二进制读出的时候,原来的内容就会被释放掉。

sqlite3_bind_*系列函数有好多,这里只对sqlite3_bind_text进行一下说明,

sqlite3_bind_text的第二个参数为序号(从1开始),

第三个参数为字符串值,

第四个参数为字符串长度。

sqlite3_bind_text的第五个参数为一个函数指针,

SQLITE3执行完操作后回调此函数,通常用于释放字符串占用的内存。(这个函数指针参数具体怎么使用,我现在还不清楚)。此参数有两个常数,SQLITE_STATIC告诉sqlite3_bind_text函数字符串为常量,可以放心使用;

而SQLITE_TRANSIENT会使得sqlite3_bind_text函数对字符串做一份拷贝。

一般使用这两个常量参数来调用sqlite3_bind_text。

 

 

 

sqlite3_exec() 与sqlite3_step()区别:

sqlite3_exec() 就是把你提到的三个函数结合在了一起:sqlite3_step(), sqlite3_perpare(), sqlite3_finalize()。
然后提供一个回调函数进行结果的处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值