首页 > 数据库技术 > 详细

轻量级开源嵌入式关系数据库sqlite基本使用

时间:2014-08-12 18:38:24      阅读:447      评论:0      收藏:0      [点我收藏+]

<一,>1,安装 for centos/ReaHat;

yum -y install sqlite sqlite-devel;

2,sqlite C/C++API接口,核心对象

OCI接口(Oracle Call Interface)
2_1,核心对象:database_connection和prepared_statement;

database_connection对象是由sqlite3_open()接口函数创建并返回的,在应用程序使用任何其他SQLite接口函数前,必须先调用该函数以便获得database_connection对象,后面的其他APIs调用中,都需要database_connection对象作为输入参数以完成相应的工作,prepared_statement,可将其视为编译好的SQL语句,所有SQL语句执行相关的函数都需要改对象作为输入参数以完成指定的SQL操作.

2_2,核心接口01)

sqlite3_open 操作SQLite数据库的入口函数,该函数返回的database_connection对象是很多其他SQLite APIs的句柄参数,我们可以通过该函数即可以打开已经存在 的数据库文件,也可以创建新的数据库文件,该函数返回的database_connection对象,我们可以在多个线程之间共享该对象的指针,以便完成和数据库相关的任意操作,为访问多个数据库而创建多个数据库连接对象,因为通过SQLite自带的ATTACH命令可以在一个连接中方便的访问多个数据库;

2),sqlite3_prepar

该函数将SQL文本转换为prepared_statement对象,斌在函数执行后返回该对象指针,该函数不会评估参数指定SQL语句,它仅仅是将SQL文本初始化为待执行的状态,sqlite3_prepare_v2等同;

3),sqlite_step

函数用于评估sqlite3_prepare函数返回的prepared_statement对象,在执行完该函数之后,prepared_statement对象的内部指针将指向其返回的结果集的第一行;迭代其后的数据行,则需要不断的调用该函数,直到遍历完数据行,对于insert,update和delete等DML语句,sqlite_step一次即可完成;

4),sqlite3_column _....

函数用于获取当前行指定列的数据,

sqlite3_column_blob,bytes,bytes16,double,int,int64,text,text16,type,value,count;

其中sqlite3_column_count函数用于获取当前结果集中的字段数据

案例伪码,

使用sqlite3_step和sqlite_column函数迭代结果集中每行数据

int fieldCount = sqlite3_column_count();

while (sqlite3_step()<>EOF)

{

for (int i = 0;i < fieldCount;i++)

{

int v = sqlite3_column_int();

}

}

5),sqlite3_finalize

函数用于销毁prepared_statement对象,否则会造成内存泄露

6),sqlite3_close

函数用于关闭之前打开的database_connection对象,其中所有和该对象相关的prepared_statement对象都必须在此之前销毁;

3,参数变量绑定;

SQLite的SQL文本也支持变量绑定,以减少SQL语句被动态解析的次数,有利于提高数据查询和操作效率,要完成该操作,还需要SQLite提供的另外2个接口,sqlite3_reset和sqlite3_bind;

 1 void test_parameter_binding() {
 2 //1. 不带参数绑定的情况下插入多条数据,
 3 char strSQL[128];
 4 for (int i = 0;i < MAX_ROWS;++i)
 5 {
 6 sprintf(strSQL,"insert into testtable values(%d)",i);
 7 sqlite3_prepare_v2(...,strSQL);
 8 sqlite3_step(prepared_statement);
 9 sqlite3_finalize(prepared_statement);
10 }
11 //2,参数绑定情况下插入多条数据
12 string strSQLWithParameter = "insert into testtable values(?)";
13 sqlite3_prepare_v2(...,strSQL);
14 for (int i = 0;i < MAX_ROWS;++i)
15 {
16 sqlite3_bind();
17 sqlite3_step();
18 sqlite3_reset();
19 }
20 sqlite3_finalize();
21 
22 }

<二,>数据库,表CLI语句;

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

在指定数据库创建表;

bubuko.com,布布扣

用attach database ‘数据库文件路径,可以存在或是新建‘ as 数据库名,同前面的数据库文件名一样;

在在其创建表时,仍然需要指定此数据库的名称,不然SQL创建的数据表将会被创建到我们sqlite3 数据库名称的数据库中;

简单数据库备份恢复

bubuko.com,布布扣

bubuko.com,布布扣

轻量级开源嵌入式关系数据库sqlite基本使用,布布扣,bubuko.com

轻量级开源嵌入式关系数据库sqlite基本使用

原文:http://www.cnblogs.com/ruiy/p/sqlite3.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!