Sqlite3_prepare

这个函数将sql文本转换成一个准备语句(prepared statement)对象,同时返回这个对象的指针。这个接口需要一个数据库连接指针以及一个要准备的包含SQL语句的文本。它实际上并不执行(evaluate)这个SQL语句,它仅仅为执行准备这个sql语句

函数定义(仅列出UTF-8的)

int sqlite3_prepare(

  sqlite3 *db,            /* Database handle */

  const char *zSql,       /* SQL statement, UTF-8 encoded */

  int nByte,              /* Maximum length of zSql in bytes. */

  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */

  const char **pzTail     /* OUT: Pointer to unused portion of zSql */

);

int sqlite3_prepare_v2(

  sqlite3 *db,            /* Database handle */

  const char *zSql,       /* SQL statement, UTF-8 encoded */

  int nByte,              /* Maximum length of zSql in bytes. */

  sqlite3_stmt **ppStmt,  /* 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:能够使用sqlite3_step()执行的编译好的准备语句的指针,如果错误发生,它被置为NULL,如假如输入的文本不包括sql语句。调用过程必须负责在编译好的sql语句完成使用后使用sqlite3_finalize()删除它。

 

说明

如果执行成功,则返回SQLITE_OK,否则返回一个错误码。推荐在现在任何的程序中都使用sqlite3_prepare_v2这个函数,sqlite3_prepare只是用于前向兼容

 

备注

<1>准备语句(prepared statement)对象

typedef struct sqlite3_stmt sqlite3_stmt;

        

准备语句(prepared statement)对象一个代表一个简单SQL语句对象的实例,这个对象通常被称为“准备语句”或者“编译好的SQL语句”或者就直接称为“语句”。

         语句对象的生命周期经历这样的过程:

l  使用sqlite3_prepare_v2或相关的函数创建这个对象

l  使用sqlite3_bind_*()给宿主参数(host parameters)绑定值

l  通过调用sqlite3_step一次或多次来执行这个sql

l  使用sqlite3——reset()重置这个语句,然后回到第2步,这个过程做0次或多次

l  使用sqlite3_finalize()销毁这个对象

 

在sqlite中并没有定义sqlite3_stmt这个结构的具体内容,它只是一个抽象类型,在使用过程中一般以它的指针进行操作,而sqlite3_stmt类型的指针在实际上是一个指向Vdbe的结构体得指针

<2>宿主参数(host parameters)

在传给sqlite3_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”的参数,它也有一个索引值,被自动指定。

可以使用sqlite3_bind_*()来给这些参数绑定值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫框架scrapy实例详解_python爬虫框架scrapy实例详解

生成项目scrapy提供一个工具来生成项目&#xff0c;生成的项目中预置了一些文件&#xff0c;用户需要在这些文件中添加自己的代码。打开命令行&#xff0c;执行&#xff1a;scrapy startproject tutorial&#xff0c;生成的项目类似下面的结构tutorial/scrapy.cfgtutorial/__in…

themyleaf 图片上传_javaEE --springboot #实现图片上传和回显 #单文件上传 #多文件上传 #ajax异步文件上传 (非常详细,从创建项目开始)...

实现文件上传和回显1、新建一个SpringBoot项目&#xff0c;选择 Spring Web 和 thymeleaf 依赖 。pow.xml文件下的依赖如下2、根据下图&#xff0c;创建如下文件3、直接上代码配置文件 application.xmlserver:port: 8005file:upload:path: F://upload/relationImg: /images/配置…

sqlite3_setp

这个过程用于执行有前面sqlite3_prepare创建的准备语句。这个语句执行到结果的第一行可用的位置。继续前进到结果的第二行的话&#xff0c;只需再次调用sqlite3_setp()。继续调用sqlite3_setp()知道这个语句完成&#xff0c;那些不返回结果的语句&#xff08;如&#xff1a;INS…

aix linux运维,运维老司机分享的八个AIX日常运维经验及案例

原文来自微信公众号&#xff1a;AIX专家俱乐部【经验分享】在AIX启动时&#xff0c;打开debug模式经常遇到aix无法启动&#xff0c;但又不知道pending在哪&#xff0c;因此打开启动过程的debug模式&#xff0c;对于诊断问题有很大的帮帮助。下面是打开debug的方法&#xff1a;打…

Mysql找不到mysql.sock怎么办?

1. #ps -aux|grep mysql 找mysql的进程. #kill mysql进程号 确定全部kill光 2.直接跳第3步&#xff0c;无效再使用第2步 /usr/local/mysql/bin/mysqld_safe --usermysql & 启动mysql. bin/mysql -u root -p 登陆mysql 3. 重启mysql服务&#xff0c;可以到mysql的安装目录下…

ssr无法在win10使用_Win10疑难解答无法使用怎么办-百度经验

Win10疑难解答无法使用的解决方法Win10系统打开疑难解答工具时只显示“出于安全考虑&#xff0c;某些设置由组策略控制”&#xff0c;怎么办&#xff1f;1、打开Windows10系统的控制面板&#xff0c;双击疑难解答&#xff0c;出现提示&#xff1a;出于安全考虑&#xff0c;某些…

sqlite3_column

这个过程从执行sqlite3_step()执行一个准备语句得到的结果集的当前行中返回一个列。每次sqlite3_step得到一个结果集的列停下后&#xff0c;这个过程就可以被多次调用去查询这个行的各列的值。对列操作是有多个函数&#xff0c;均以sqlite3_column为前缀 const void *sqlite3_…

linux中将hdfs数据导入hbase,将数据文件导入到HBase中

假设有一个TSV格式的数据文件test.dat(TSV是指数据文件中的每个字段是以制表符隔开的)首先&#xff0c;将test.dat上传到hdfs上&#xff0c;具体的命令如下&#xff1a;hadoop fs -copyFromLocal test.dat的路径名 /tmp/test.dat(/tmp是hdfs上的一个目录)执行以下命令就可以查…

ios13看怎么airpods电量_iPhoneXR查看airpods蓝牙耳机电量的三种方法

AirPods是苹果公司研发的一款蓝牙耳机&#xff0c;与方法一、当 AirPods 与 iPhoneXR 已经自动配对连接&#xff0c;这时想看耳机和盒子电量&#xff0c;只要在 iPhoneXR 屏幕点亮或解锁的情况下&#xff0c;在手机旁边打开 AirPods 收纳盒的盖子&#xff0c;手机便会自动弹出耳…

sqlite3_finalize sqlite3_close

sqlite3_finalize int sqlite3_finalize(sqlite3_stmt *pStmt); 这个过程销毁前面被sqlite3_prepare创建的准备语句&#xff0c;每个准备语句都必须使用这个函数去销毁以防止内存泄露。 在空指针上调用这个函数没有什么影响&#xff0c;同时可以准备语句的生命周期的任一时刻…

人这辈子没法做太多的事情

人这辈子没法做太多的事情&#xff0c;所以每一件都要做得精彩绝伦。转载于:https://www.cnblogs.com/xiandedanteng/p/3291585.html

magicbook linux系统换w7,荣耀magicbook怎么安装win7 荣耀magicbook安装win7方法

荣耀magicbook 2019笔记本是一款2019年上市的时尚轻薄笔记本电脑&#xff0c;这款电脑采用了amd ryzen 5系列处理器以及性能级独立显卡&#xff0c;能够满足用户们日常娱乐使用需求&#xff0c;那么荣耀magicbook 2019笔记本怎么使用u启动u盘启动盘安装win7系统呢?今天为大家分…

php 区块链算法_PoW/BFT等5种主流区块链共识算法的开源代码实现

共识算法是实现自主产权区块链的必不可少的关键环节&#xff0c;本文列出社区中相对成熟的区块链共识算法开源实现&#xff0c;包括BFT共识、Raft共识、Paxos共识、PoW共识等&#xff0c;可供希望开发自主产权区块链的团队参考学习。相关推荐&#xff1a;区块链开发系列教程1、…

makefile 的export问题

from http://againinput4.blog.163.com/blog/static/172799491201132693532418/ 1.在&#xff08;parent&#xff0c;上层的&#xff09;makefile中export出来变量&#xff0c;子makefile&#xff08;sub make&#xff09;中&#xff0c;是可以访问的。 2. 而同一级别的makefil…

单片机 串口 波特率 c语言 9600 11.0592mhz t1,PLC与单片机串口通信的实现

党强摘要&#xff1a;本文主要进行探讨单片机与可编程逻辑控制器plc之间的串行通信以及各个系统在通信技术中的应用&#xff0c;本文主要以at89c51单片机和fpi系列的单片机为例进行阐述单片机与plc的串行通信。关键词&#xff1a;plc 单片机 串行通信中图分类号&#xff1a;TP2…

PHP中的正则表达式函数preg_

preg_match(); //用于正则表达式的匹配&#xff0c;且只匹配一次 preg_match_all();//用于正则表达式的匹配&#xff0c;会对所有符合规则的都进行匹配 preg_replace(); //正则表达式替换函数 preg_splite(); //正则分割函数 preg_match ( mode, string subject , ar…

vue 离开页面时间_vue页面离开后执行函数的实例

vue页面离开后执行函数的实例如下所示&#xff1a;destroyed: function () {console.log("我已经离开了&#xff01;");this.doSomething();},说明&#xff1a;destroyed是与methods、mounted同层级的以上这篇vue页面离开后执行函数的实例就是小编分享给大家的全部内…

Linux批量删除文件

find [目录名] -name [文件名] -exec rm -rf {} \; 例如&#xff1a;find ./ -name *.raw -exec rm -rf {} \; 其中&#xff0c; -exec 表示后面执行命令 {} 表示查询到的文件名 -rf 为删除命令rm的参数&#xff0c;r 表示递归删除&#xff0c; f表示不需要确认&#xff0c;两个…

c语言选择结构程序设计报告,C语言学习与总结---第四章:选择结构程序设计

选择结构程序设计4.1 if语句4.2 关系运算符和关系表达式4.2.1 关系运算符4.2.2 关系表达式4.3 逻辑运算符和逻辑表达式4.3.1 逻辑运算符4.3.2 逻辑表达式4.4 条件运算符和条件表达式4.5 选择结构的嵌套4.6 switch语句4.7 程序应用4.1 if语句If语句有三种基本形式(1)if (判断条件…

jQuery 请指出'$'和'$.fn'的区别?或者说出'$.fn'的用途。

http://hi.baidu.com/chy0806css/item/acc52425099c30ff50fd87eb Jquery为开发插件提供了两个方法&#xff0c;分别是&#xff1a; $.extend(obj);$.fn.extend(obj); 1.那么这两个分别是什么意思&#xff1f; $.extend(obj);是为了扩展jquery本身&#xff0c;为类添加新的方法 …