加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sqlite3 api学习笔记

发布时间:2020-12-12 20:28:20 所属栏目:百科 来源:网络整理
导读:sqlite3中有5种数据类型:int real text null blob 但sqlite3中的列的数据类型不是固定的,列的数据类型随着实际插入的数据的格式而定; 在sqlite3中使用sql时,有一个非常有趣而有强大的概念:相似类型。引入相似类型的概念,主要是为了兼容各种数据库(sql

sqlite3中有5种数据类型:int real text null blob

但sqlite3中的列的数据类型不是固定的,列的数据类型随着实际插入的数据的格式而定;

在sqlite3中使用sql时,有一个非常有趣而有强大的概念:相似类型。引入相似类型的概念,主要是为了兼容各种数据库(sqlserver oracle mysql等)的sql语法。

sqlite3中常用的几个函数:

int sqlite3_open(const char * filepath,sqlite3 **ppDb)

打开一个数据库连接,filepath就是数据库文件,如果数据库文件不存在,该函数会创建这个数据库文件。

ppDb是输出参数,当成功创建数据库连接时,(*ppDb)会指向一个sqlite3对象;当创建数据库连接失败是,(*ppDb)为NULL。

当成功创建数据库连接时,此函数返回SQLITE_OK,否则返回错误代号。

打开数据链接后,我们一般需要执行一些sql语句,在执行sql之前,需要编译这些sql语句:

sqlite3_prepare_v2(sqlite3 *pDb,const char * pSql,int nBytes,sqlite3_stmt **ppSamt,const char **pTail)

调用此函数时,我们一般将 nBytes设为-1,这表示我们希望编译由pSql指定的sql语句: pSql开始到结尾的字符串,该字符串会被视为用UTF-8编码

而将**pTail设为NULL

ppStamt为输出参数,当成功编译sql语句时,(*ppStmt)会指向一个sqlite3_stmt对象;当编译sql语句失败时,(*ppStmt)会被设为NULL。

pDb就是所代开的数据库链接。

当成功编译sql语句时,此函数返回SQLITE_OK,否则返回错误代号

例子: sqlite3_preapare_v2(pDb,"create table TestTable(string TEXT)",-1,ppStmt,NULL)

有个函数非常利于调试用,它是const char *sqlite3_errmsg(sqlite3 *pDb),此函数返回上次操作sqlite3数据时,识别的错误的信息。

注意:此函数的返回的 字符串,不需我们自己调用sqlite3_free()释放。

如:if(sqlite3_prepare_v2(..) != SQLITE_OK){

printf("error message:",sqlite3_errmsg(pDb));

}

编译好sql语句后,我们就需要执行这些语句:

int sqlite3_step(sqlite3 *pDb,sqlite3_stmt *pStmt)

sql语句是insert、delete、drop或delete时,只需调用此函数一次,然后检查它是否返回SQLITE_DONE即可;

如果sql语句是select,因为select可能返回多行数据,此时,此时,每调用一次sqlite3_step()就相当fetch下一行数据,当sqlite3_step()成功fetch一行数据时,返回SQLITE_ROW,当fetch完所有的数据时,再调用sqlite3_step()后会返回SQLITE_DONE

当不在需要使用sqlite3_stmt对象时,需要调用sqlite_finalize(sqlite3_stmt *pStmt)释放掉

当不再需要进行数据库操作时,需要调用sqlite_close(sqlite3 *pDb)关闭数据库链接。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读