Sqlite   发布时间:2022-05-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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,请注明来意。
标签: