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)关闭数据库链接。
但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)关闭数据库链接。
相关文章推荐
- guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用
- FreeRTOS学习笔记——任务删除 vTaskDelete() API
- [shiro学习笔记]第四节 使用源码生成Shiro的CHM格式的API文档
- angular学习笔记(二十三)-$http(1)-api
- Android开发学习笔记:数据存取之SQLite浅析
- geometry-api-java 学习笔记(一)概述
- 学习笔记 新浪微博篇 三 Android SQLiteOpenHelper 类详解
- 学习SQLite基础笔记
- IOS学习笔记28—SQLite3第三方库之FMDB
- Java Sound API 学习笔记
- UNIX网络编程卷一:套接字联网API(学习笔记一)
- Box2d学习笔记五:API学习之b2World
- Sqlite3学习笔记
- 【CUDA学习笔记】3.纹理引用API
- Python学习笔记21:数据库操作(sqlite3)
- springmvc学习笔记(8)——使用Servlet原生API作为参数
- ArcGIS API for JavaScript 4.2学习笔记[10] 2D添加指北针widget、视图保存、视图padding(第二章完结)
- Android开发学习笔记:数据存取之SQLite浅析
- javascript学习笔记—DOM常用API、属性、方法、函数
- Effective C# 学习笔记(九) 在你的API中避免使用类型转换运算