SQlite数据库的C编程接口(三) 预处理语句(Prepared Statements)

本文介绍了SQLite数据库的预处理语句(Prepared Statements)的使用,包括sqlite3_prepare_v2函数创建预处理语句,sqlite3_bind_xxx函数绑定参数,sqlite3_step函数执行和遍历结果,以及sqlite3_reset和sqlite3_finalize函数的重置和资源释放。预处理语句提高了SQL执行效率,允许多次执行和参数绑定。
摘要由CSDN通过智能技术生成

  SQlite3数据库连接完成之后,就可以执行SQL命令了。下面将要介绍的preparestep函数都是用来操作和执行SQL命令的。

  典型的函数操作流程(伪代码):

[cpp]  view plain copy
  1. /* create a statement from an SQL string */  
  2. sqlite3_stmt *stmt = NULL;  
  3. sqlite3_prepare_v2( db, sql_str, sql_str_len, &stmt, NULL );  
  4.   
  5. /* use the statement as many times as required */  
  6. while( ... )  
  7. {  
  8.     /* bind any parameter values */  
  9.     sqlite3_bind_xxx( stmt, param_idx, param_value... );  
  10.     ...  
  11.     /* execute statement and step over each row of the result set */  
  12.     while ( sqlite3_step( stmt ) == SQLITE_ROW )  
  13.     {  
  14.         /* extract column values from the current result row */  
  15.         col_val = sqlite3_column_xxx( stmt, col_index );  
  16.         ...  
  17.     }  
  18.   
  19.     /* reset the statement so it may be used again */  
  20.     sqlite3_reset( stmt );  
  21.     sqlite3_clear_bindings( stmt );  /* optional */  
  22. }  
  23.   
  24. /* destroy and release the statement */  
  25. sqlite3_finalize( stmt );  
  26. stmt = NULL;  

  这段程序首先调用sqlite3_prepare_v2函数,将一个SQL命令字符串转换成一条prepared语句,存储在sqlite3_stmt类型结构体中。随后调用sqlite3_bind_xxx函数给这条prepared语句绑定参数。然后不停的调用sqlite3_step函数执行这条prepared语句,获取结果集中的每一行数据,从每一行数据中调用qlite3_column_xxx函数获取有用的列数据,直到结果集中所有的行都被处理完毕。

  prepared语句可以被重置(调用sqlite3_reset函数),然后可以重新绑定参数之后重新执行。sqlite3_prepare_v2函数代价昂贵,所以通常尽可能的重用prepared语句。最后,这条prepared语句确实不在使用时,调用sqlite3_finalize函数释放所有的内部资源和sqlite3_stmt数据结构,有效删除prepared语句。

预处理(Prepare

[cpp]  view plain copy
  1. int sqlite3_prepare(  
  2.   sqlite3 *db,            /* Database handle */  
  3.   const char *zSql,       /* SQL statement, UTF-8 encoded */  
  4.   int nByte,              /* Maximum length of zSql in bytes. */  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值