c++ sqlite操作,c语言操作sqlite
一.导言
SQLite是一个基于文件的轻量级数据库,但是功能相当强大,速度也相当快,对于小型数据库的应用开发来说绝对够用。用起来也很方便。从下面的介绍可以看出,用起来真的很简单。
二、官网
Www.sqlite.org,sqlite的官方网站,在这里你可以下载最新版本的Sqlite。
第三,辅助工具和工具
Sqlite数据库的管理工具有SQLiteManager、SqliteAdmin等。
SqliteManager只有英文版,但是功能强大。一个问题是它不支持ANSI字符集的汉字显示。其自带的帮助文档有详细的SQL语句介绍,对于不熟悉Sql语句的人来说非常方便。而且它的很多操作都有自动的SQL语句提示,对于不经常使用数据库的人来说也很有用。
SqliteAdmin有绿色中文版,功能比SqliteManager略少。对于熟悉Sql语句的人来说,这个版本就足够了。
四。使用前的碳/碳准备
您可以通过将sqlite3.h和sqlite3.c直接添加到您自己的C/C项目中来使用sqlite3。
第五,打开和关闭数据库
Sqlite支持UTF-8和UTF-16,但不支持C/C程序中最常用的ANSI。因此,如果数据库路径包含汉字,则需要将其转换为相应的字符格式。
1.以UTF-8模式打开
2.以UTF-16模式打开
要在UTF-16模式下打开数据库,只需将打开数据库的语句改为 SQLite3 _ Open16 (L c: \ \ abc.db ,db)。
但一般情况下,强烈不建议使用UTF-16打开数据库。根据我的测试,我发现如果您以这种方式打开数据库,当您稍后创建数据表时,如果其中一项是TEXT类型的。那么数据表的数据内容会被强制确定为UTF-16。换句话说,您插入的任何数据都将被转换为UTF-16并存储在数据库中。执行SQL的语句是UTF-8格式的,所以当你取出的数据和存储的数据不一致时,对用户来说显然是一场灾难。
不及物动词执行SQL语句
SQL语句可以调用sqlite3_exec函数。一般来说,如果不需要返回的数据和错误信息,执行方式如下:
创建表[MyTable] ([ID]整数主键不为空,[MyText]文本不为空,[MyDate]日期不为空,[MyTime]时间不为空,[MyFloat]浮点不为空)
2.插入记录
以下是插入记录的示例SQL语句。
到我的表(我的文本,我的日期,我的时间,我的浮点)值(-这是一个漫长的工作方式!, 2012-03-23, 9:00:00, 1000)
3.更新记录
以下是更新几条记录的示例SQL语句。
更新我的表集MyText=真的吗?,MyTime=10:00:00 其中ID=0,ID=20
4.删除记录
以下是删除几条记录的SQL语句示例。
5.分批操作
如果要执行大量操作,比如插入10000条数据,那么逐个执行SQL语句需要很长时间。按事务批量处理可以大大提高运算速度(我实验了1000条记录,速度提高了500多倍)。
以下是批量插入10,000条数据的代码示例:
//插入条带数据(Begin和Commit之间的批处理操作可以大大提高效率)
result=sqlite3_exec(db, BEGIN, 0, 0, 0);
for(int I=0;我10000;我)
{
//插入一段数据
result=sqlite3_exec(db,
在我的表格中插入(我的文本,我的日期,我的时间,我的浮点)值(-这是一条很长的路要走!, 2012-03-23, 9:00:00, 1000);
0, 0, 0);
}
result=sqlite3_exec(db, COMMIT, 0, 0, 0);
七、查询并返回结果。
1.形式上的回报。
以下是以表单形式获取数据的示例代码:
int nRow,nCol
sqlite3_get_table(db, SELECT * FROM my table LIMIT 1000 OFFSET 2000 ,pazResult,nRow,nCol,0);
//nRow表示有多少行。
//nCol指示有多少列。
//可以从pazResult解析所有记录,记录以字符串形式返回。
//第n列的名称存储在pazResult[n]中
//第n行第m列的数据存储方式与paszResult[(m 1) * nCol m]相同
//使用完记录后,一定要释放为记录分配的内存。
sqlite3 _ free _ table(Paz result);
上面的查询代码还演示了如何查询指定位置的记录数。当记录集非常大时,这种查询方法非常有用。
2.以回调的形式返回。
下面的代码显示了如何获取查询语句返回的记录。
首先,你需要如下定义一个回调函数(参数的含义将在后面讨论):
int Result(void* pContext,int nCol,char** azValue,char * * az name);
然后调用sqlite函数执行查询语句,在回调函数列输入上面定义的回调函数:
sqlite3_exec(db, SELECT * FROM my table LIMIT 10 OFFSET 20 ,Result,0,0);
SQL语句执行时,每次返回一条记录就会触发上述回调函数。在这个回调函数的实现中,可以获得查询结果。
在上面的结果函数中,每个参数的含义如下:
该参数是调用sqlite3_exec函数输入的第四个参数。它通常用作环境变量来指示当前执行代码的主题。我在代码中忽略了这个参数,但在正式使用中通常不会被忽略。
八。访问二进制数据
要访问二进制数据,需要sqlite3_bind_blob之类的函数。具体用法参见这些函数的声明。作为一个轻量级数据库,我一般不会用它来存储二进制数据,这里就不详细描述了。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。