sqlite3接口函数(C/C++)

   日期:2020-11-11     浏览:99    评论:0    
核心提示:sqlite3接口函数(C/C++)核心一、两个对象1.数据库连接对象2.SQL语句对象二、八个函数1. sqlite3_open:打开或创建数据库2. sqlite3_close :关闭3. sqlite3_prepare_v2 :创建SQL语句对象4. sqlite3_bind_* :绑定参数5. sqlite3_step:执行6. sqlite3_reset :复位7. sqlite3_finalize :销毁8. sqlite3_exec :一步到位核心Sqlite3接口的核心元素:两个对

sqlite3接口函数(C/C++)

  • 核心
  • 一、两个对象
    • 1.数据库连接对象
    • 2.SQL语句对象
  • 二、八个函数
    • 1. sqlite3_open:打开或创建数据库
    • 2. sqlite3_close :关闭
    • 3. sqlite3_prepare_v2 :创建SQL语句对象
    • 4. sqlite3_bind_* :绑定参数
    • 5. sqlite3_step:执行
    • 6. sqlite3_reset :复位
    • 7. sqlite3_finalize :销毁
    • 8. sqlite3_exec :一步到位

核心

Sqlite3接口的核心元素:两个对象 和 八个函数

一、两个对象

1.数据库连接对象

sqlite3 :the database connection object 数据库连接对象,
数据库的连接句柄/数据库的文件描述符,sqlite3 代表所打开的那个 sqlite3 的数据库文件,后序对该数据库的操作都需要用到这个对象。

2.SQL语句对象

sqlite3_stmt :the prepared statment object SQL语句对象,
去操作关系型数据库都是通过SQL语句来实现的
sqlite3_stmt这个结构体用来描述一个SQL语句对象,我们的应用都是用SQL语句对象去发送SQL指令给数据库管理系统

二、八个函数

1. sqlite3_open:打开或创建数据库

sqlite3_open:打开或创建一个sqlite3数据库,返回一个sqlite3的数据库连接对象

 int sqlite3_open(
				const char *filename,   
				sqlite3 **ppDb          
				);

filename:要打开的sqlite3的数据库的路径名
ppDb: 二级指针 ,用来保存打开的数据库连接对象的
返回值:
成功返回SQLITE_OK(0),失败返回其他值

2. sqlite3_close :关闭

sqlite3_close:关闭一个sqlite3的数据库连接对象
int sqlite3_close ( sqlite3* );
返回值:
成功返回SQLITE_OK(0),失败返回其他值

3. sqlite3_prepare_v2 :创建SQL语句对象

3.1、sqlite3_prepare_v2 :编译SQL语句,并创建一个SQL语句对象

int sqlite3_prepare_v2(
				 sqlite3 *db,   
				 const char *zSql,    
				 int nByte,      
				sqlite3_stmt **ppStmt,  
				const char **pzTail     
				);

返回值:
成功返回SQLITE_OK(0)失败返回其他值

3.2、zSql指向的原始字符串语句:
(1)不带参数(变量)

"create table t_school(
					id int primary key,
					name text not null,
					tel text,addr text);
		insert into t_school values(1001,'gec','123456','changsha');"

(2)包括参数
编译的SQL语句中可以包含“变量/参数”,其值可以在运行期间改变,但是SQL语句对象不需要重新编译,通过特定的参数接口来制定这些SQL变量的值

char *sql = "insert into stu (id,name,score)values(变量名,变量名,变量名);";

有如下方式来指定变量名:
(1)?NNN
NNN 必须是一个 1 ~ SQLITE_MAX_NUM

: AAA 命名参数,参数名AAA,AAA就是你取的一个变量的名字
@ AAA 命名参数,参数名AAA,AAA就是你取的一个变量的名字
$ AAA 命名参数,参数名AAA,AAA就是你取的一个变量的名字

4. sqlite3_bind_* :绑定参数

sqlite3_bind_* :给SQL语句对象绑定参数 ==》 一系列的绑定参数

4.1、给SQL语句对象的参数赋值
获取参数的索引,因为所有的绑定参数的函数,都是通过索引去指定参数
sqlite3_bind_parameter_index:用来获取zName参数名在语句对象中的索引

int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);

返回值:
成功返回索引值(>0),假如没有匹配到参数名,返回0

4.2、给参数赋值

int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
int sqlite3_bind_double(sqlite3_stmt*, int, double);
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_null(sqlite3_stmt*, int);
int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));

这些绑定函数的参数是:
第一个参数:SQL语句对象
第二个参数:要绑定的变量在SQL语句中的索引
第三个参数:要绑定的值

sqlite3_bind_text(sqlite3_stmt*, int, const char*str, int n, void(*p)(void*));
	

返回值:
成功返回SQLITE_OK(0),失败返回其他值

5. sqlite3_step:执行

sqlite3_step :执行编译好的SQL语句对象

int sqlite3_step(sqlite3_stmt*ppStmt);
			// ppStmt:指向要执行的SQL语句对象

返回值:

SQLITE_BUSY :没获取到锁,语句没有执行
SQLITE_DONE :SQL语句执行完成
SQLITE_ERROR :出错
SQLITE_MISUSE:使用方法不当
SQLITE_ROW: 当SQL语句为 select 时候,执行后,结果是一个表,它是一行一行返回的,调用一次 sqlite3_step 就会返回一行,SQLITE_ROW就表示有返回结果,一直到返回值 SQLITE_DONE

查询结果:
select语句,他返回的是一个结果集,需要用到额外的一些函数接口去获取这些结果集中记录

// 返回select结果中有多少列
int sqlite3_column_count(sqlite3_stmt*ppStmt);
// 返回select结果中第i列的数据类型
int sqlite3_column_type(sqlite3_stmt*ppStmt, int iCol);
				
// 获取结果集中当前行中的第i列的值
double sqlite3_column_double(sqlite3_stmt*, int iCol);
int sqlite3_column_int(sqlite3_stmt*, int iCol);
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
// 返回结果集中第i列的名字
const char *sqlite3_column_name(sqlite3_stmt*, int iCol);

6. sqlite3_reset :复位

sqlite3_reset:用来复位SQL语句对象,以便下一轮的参数的绑定

7. sqlite3_finalize :销毁

sqlite3_finalize:用来销毁一个SQL语句对象

int sqlite3_finalize(sqlite3_stmt*ppStmt);

8. sqlite3_exec :一步到位

sqlite3_exec :一步到位,其实是这三个函数的组合:

sqlite3_prepare_v2 :创建一个SQL语句对象
sqlite3_step :执行SQL语句对象
sqlite3_finalize :用来销毁一个SQL语句对象

int sqlite3_exec(
			sqlite3*,          
			const char *sql,      
			int (*callback)(void*,int,char**,char**),  
			void *,            
			char **errmsg      
			);

第三个参数:回调函数
一般在SQL语句为 select 语句时,需要回调,因为select语句需要返回结果。select 每查询一条语句的时候,就会调用一次该回调函数。

int callback(void*arg,int n,char*column_value[],char*column_names[]);
		

返回值:
成功返回0,失败返回其他值,回调函数执行失败(返回非0),sqlite3_exec 就不会继续往下执行

只有SQL语句为 select 语句才会使用回调函数,其他语句时,可以NULL

.

关注博主不迷路,博主带你上高速!

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服