大佬教程收集整理的这篇文章主要介绍了Sqlite3_prepare,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这个函数将sql文本转换成一个准备语句(prepared statement)对象,同时返回这个对象的指针。这个接口需要一个数据库连接指针以及一个要准备的包含SQL语句的文本。它实际上并不执行(evaluate)这个SQL语句,它仅仅为执行准备这个SQL语句
函数定义(仅列出UTF-8的)
int @R_502_4777@_prepare(
@R_502_4777@ *db,/* Database handle */
const char *zsql,/* sql statement,UTF-8 encoded */
int nByte,/* Maximum length of zsql in bytes. */
@R_502_4777@_stmt **ppStmt,/* OUT: Statement handle */
const char **pzTail/* OUT: Pointer to unused portion of zsql */
);
int @R_502_4777@_prepare_v2(
@R_502_4777@ *db,/* OUT: Statement handle */
const char **pzTail/* OUT: Pointer to unused portion of zsql */
);
参数:
db:数据指针
zsql:SQL语句,使用UTF-8编码
nByte:如果nByte小于0,则函数取出zsql中从开始到第一个0终止符的内容;如果nByte不是负的,那么它就是这个函数能从zsql中读取的字节数的最大值。如果nBytes非负,zsql在第一次遇见’/000/或’u000’的时候终止
pzTail:上面提到zsql在遇见终止符或者是达到设定的nByte之后结束,假如zsql还有剩余的内容,那么这些剩余的内容被存放到pZTail中,不包括终止符
ppStmt:能够使用@R_502_4777@_step()执行的编译好的准备语句的指针,如果错误发生,它被置为NulL,如假如输入的文本不包括SQL语句。调用过程必须负责在编译好的SQL语句完成使用后使用@R_502_4777@_finalize()删除它。
说明
如果执行成功,则返回sqlITE_OK,否则返回一个错误码。推荐在现在任何的程序中都使用@R_502_4777@_prepare_v2这个函数,@R_502_4777@_prepare只是用于前向兼容
备注
<1>准备语句(prepared statement)对象
typedef struct @R_502_4777@_stmt @R_502_4777@_stmt;
准备语句(prepared statement)对象一个代表一个简单SQL语句对象的实例,这个对象通常被称为“准备语句”或者“编译好的SQL语句”或者就直接称为“语句”。
语句对象的生命周期经历这样的过程:
l使用@R_502_4777@_prepare_v2或相关的函数创建这个对象
l使用@R_502_4777@_bind_*()给宿主参数(host parameters)绑定值
l通过调用@R_502_4777@_step一次或多次来执行这个sql
l使用@R_502_4777@——reset()重置这个语句,然后回到第2步,这个过程做0次或多次
l使用@R_502_4777@_finalize()销毁这个对象
在sqlite中并没有定义@R_502_4777@_stmt这个结构的具体内容,它只是一个抽象类型,在使用过程中一般以它的指针进行操作,而@R_502_4777@_stmt类型的指针在实际上是一个指向Vdbe的结构体得指针
<2>宿主参数(host parameters)
在传给@R_502_4777@_prepare_v2()的sql的语句文本或者它的变量中,满足如下模板的文字将被替换成一个参数:
l?
l?NNN,NNN代表数字
l:VVV,VVV代表字符
l@VVV
l$VVV
在上面这些模板中,NNN代表一个数字,VVV代表一个字母数字标记符(例如:222表示名称为222的标记符),SQL语句中的参数(变量)通过上面的几个模板来指定,如
“select ? from ? “这个语句中指定了两个参数,sqlite语句中的第一个参数的索引值是1,这就知道这个语句中的两个参数的索引分别为1和2,使用”?”的话会被自动给予索引值,而使用”?NNN”则可以自己指定参数的索引值,它表示这个参数的索引值为NNN。”:VVV”表示一个名为”VVV”的参数,它也有一个索引值,被自动指定。
可以使用@R_502_4777@_bind_*()来给这些参数绑定值
以上是大佬教程为你收集整理的Sqlite3_prepare全部内容,希望文章能够帮你解决Sqlite3_prepare所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。