sqlite数据库接口函数

sqlite3 c/c++ 接口:
sqlite3 接口的核心元素
两个对象
八大函数

两个对象:
	sqlite3 :the database connection object 数据库连接对象
			数据库连接句柄/数据库文件描述符
			sqlite3 代表着你所打开的那个sqlite3的数据库文件,后序对这个数据库文件
			进行操作都需要用到这个对象
			
	sqlite3_stmt :the prepared statemet object  SQL语句对象
			
			
八大函数:
	sqlite3_open :打开或创建一个sqlite3数据库,返回一个sqlite3数据库连接对象
	sqlite3_close :关闭一个sqlite3数据库
	
	sqlite3_prepare_v2 :创建一个SQL语句对象  
	
	sqlite3_bind_* :给语句对象绑定参数的函数
	sqlite3_step :执行SQL语句对象
	sqlite3_column :分析一行中的列
	sqlite3_reset :用来复位SQL语句对象,以便下一轮的参数绑定
	
	
	sqlite3_finalize:销毁一个语句对象
	
	sqlite3_exec:
		sqlite3_prepare_v2
		sqlite3_step	
		sqlite3_finalize
			三个函数的合成
  1. 具体的API函数解析
    (1)打开一个sqlite3数据库
    在sqlite3数据库管理系统中,用结构体 sqlite3来表示一个已经打开的数据库对象

    int sqlite3_open( const char *filename, sqlite3 **ppDb);
    filename:要打开的数据库的路径名
    ppDb:二级指针,用来保存打开的数据库连接对象

     		返回值:
     			成功返回 SQLITE_OK
     			失败返回其他值
    

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

    (3)sql语句对象
    用sqlite3_stmt结构体来描述一个SQL语句对象
    我们的应用都是通过 SQL语句对象 把 SQL语句指令发给数据库管理系统

     sqlite3_prepare_v2 :创建一个SQL语句对象  
     
     int sqlite3_prepare_v2(
       sqlite3 *db,            /* 数据库连接对象,表示要操作哪个数据库 */
       const char *zSql,       /* 要执行的SQL语句,多条SQL语句用 ; 隔开,可以包含变量名 */
       int nByte,              /* 表示要编译到哪个位置 */
     						  < 0 :编译到zSql指向的语句中第一个\0为止
     						  == 0 :什么都不编译
     						  >0 : 只编译 zSql指向的语句中的前n个字节
     						  
       sqlite3_stmt **ppStmt,  /* *ppStmt 用来保存编译好的SQL语句对象 */
       const char **pzTail     /* 如果不为空 ,*pzTail 指向的zSql中编译的第一条完整的
     							SQL语句的第一个字符的地址*/
     );
    
     		
     返回值:
     	成功返回 SQLITE_OK
     	失败返回其他值
     	
     zSql指向的SQL语句:
     	(1)不带参数
     		const char * sql = "create table t_stu\
     		(\
     		num int primary key,\
     		name varchar(255) not null,\
     		age int\
     		);insert into t_stu(num,name,age) values (1001,'pxl',\
     		18);";
     		
     	
     	(2)带参数
     			编译的SQL语句中可以包含 “变量/参数”,其值在运行期间可以改变,但是
     			SQL语句对象不需要重新编译,通过特定的采纳数接口来指定这些SQL变量的值
     			
     		const char*sql = "insert into t_stu(num,name,age) values (变量名1,变量名2,变量名3));";
     		
     		变量名按照以下方式来执行:
     			?NUM  	 NUM 的范围[1,MAX_NUM]
     				eg:
     					const char*sql = "insert into t_stu(num,name,age) values (?1,?2,?3));";
     			:NMAE  NAME 就是你取的变量的名字
     			@NAME
     			$NAME
     			
     				eg:
     					const char*sql = "insert into t_stu(num,name,age) values (:a,:b,:c));";
     		(2.1)给SQL语句对象中的参数赋值
     				1. 获取参数的索引
     					因为所有的绑定参数的函数,都是通过索引去操作这些参数
     					
     					sqlite3_bind_parameter_index :用来获取某个变量在SQL语句对象中的索引
     					  int sqlite3_bind_parameter_index(sqlite3_stmt*stmt, const char *zName); 
     							stmt:SQL语句对象
     							zName:变量名
     					返回值:成功返回索引 (> 0)
     							假如没有匹配到参数名 返回0 
     							
     				2. 绑定相应的值到变量/参数上面
     					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*stmt,int index,const char*str,int,void(*)(void*));
     						第一个参数:SQL语句对象
     						第二个参数: 要绑定的变量的索引
     						第三个参数: 要绑定的值
     								sqlite3_bind_int==》int
     								sqlite3_bind_double ==》double
     								sqlite3_bind_null ==>空
     		int sqlite3_bind_text(sqlite3_stmt*stmt,int index,const char*str,int len,void(*p)(void*));	
     								str :要绑定的字符串的地址
     								len :字符串的长度
     								p : 函数指针,指向的函数用来释放字符串的空间
     									如果不需要释放字符串的空间 直接给 NULL
    

    (4)sqlite3_step :执行SQL语句对象
    int sqlite3_step(sqlite3_stmt*pStmt);
    pStmt : 指向要编译好的并且要执行的SQL语句对象

     		返回值:
     			SQLITE_DONE :SQL语句执行完成
     			SQLITE_ERROR :出错啦
     			SQLITE_BUSY :没有拿到锁,没有执行语句
     			SQLITE_MISUSE:使用方法不当
     			SQLITE_ROW:返回一行
     				当SQL语句时select时候,执行结果是一个结果集,一行一行的返回。
     				调用一次sqlite3_step就可以获取一行的结果,一直调用到结果为DONE
     				
     				SQLITE_ROW:返回一行,需要用户自己调用解析函数去解析这一行的数据
     				
     				//用来获取一行中有多少列
     				int sqlite3_column_count(sqlite3_stmt *pStmt);
     				
     				//用来获取一行中第i列的数据类型
     				int sqlite3_column_type(sqlite3_stmt*pStmt, int iCol);
     					pStmt:SQL语句对象
     					iCol :第几列	,从 0开始
     					
     					返回值:
     						SQLITE_INTEGER  1
     						SQLITE_FLOAT    2
     						SQLITE_BLOB     4
     						SQLITE_NULL     5
     						SQLITE_TEXT     3
     						
     				// 获取一行中第i列的值
     				const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
     				double sqlite3_column_double(sqlite3_stmt*, int iCol);
     				int sqlite3_column_int(sqlite3_stmt*, int iCol);
     				sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
     				const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
     				
     				//获取第i列的列名
     				const char *sqlite3_column_name(sqlite3_stmt*, int N);
    

    (5) sqlite3_finalize:销毁一个语句对象
    int sqlite3_finalize(sqlite3_stmt *pStmt);
    pStmt:要销毁的语句对象

    (6) sqlite3_reset :重置SQL语句对象,以便下一轮绑定参数
    int sqlite3_reset(sqlite3_stmt *pStmt);
    pStmt:要重置的语句对象

    (7) sqlite3_errmsg :输出数据库中的出错信息
    const charsqlite3_errmsg(sqlite3pDb);

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值