您的位置:首页 > 数据库

sqlite3 api学习笔记

2012-08-07 20:47 274 查看
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开始到\0结尾的字符串,该字符串会被视为用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)关闭数据库链接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: