SQLiteC/C++接口详细介绍sqlite3_stmt类(五)

news2024/11/24 3:09:01

返回:SQLite—系列文章目录   

 上一篇:SQLiteC/C++接口详细介绍sqlite3_stmt类(四)-

下一篇: 无

12. sqlite3_bind_text16函数

sqlite3_bind_text16函数用于将UTF-16编码的文本数据(字符串)绑定到sqlite3_stmt对象中的SQL语句参数中。函数原型如下:

int sqlite3_bind_text16(
  sqlite3_stmt*, 
  int, 
  const void*, 
  int, 
  void(*)(void*)
);

函数参数含义如下:

- 第一个参数是sqlite3_stmt对象的指针,表示由sqlite3_prepare_v2()函数编译的SQL语句。
- 第二个参数是要绑定的参数的索引,从1开始。
- 第三个参数是待绑定的字符串。
- 第四个参数是待绑定的字符串大小,以字节为单位。如果设置为-1,表示该函数自动根据传入的指针参数确定文本数据大小。
- 第五个参数是一个函数指针,用于在释放sqlite3_stmt对象前处理存放在其中的文本数据。

下面是一些使用sqlite3_bind_text16函数的示例:

sqlite3_stmt *stmt;
const void *name = L"John";
sqlite3_prepare_v2(db, "INSERT INTO student (name, age) VALUES (?, ?)", -1, &stmt, NULL);
sqlite3_bind_text16(stmt, 1, name, wcslen(name) * sizeof(wchar_t), SQLITE_STATIC);
sqlite3_bind_text16(stmt, 2, L"20", -1, SQLITE_STATIC);
sqlite3_step(stmt);
sqlite3_finalize(stmt);

该示例程序使用sqlite3_bind_text16函数向预处理的SQL语句中绑定字符串数据。第二个参数指定了要绑定的参数的索引,从1开始。第三个参数是要绑定的字符串数据,第四个参数是字符串长度,可以使用wcslen()函数计算。第五个参数是一个回调函数,用于在释放sqlite3_stmt对象前处理存放在其中的文本数据。如果文本数据是静态的,可以将第五个参数设置为SQLITE_STATIC。

13. sqlite3_bind_text64函数

sqlite3_bind_text64函数用于将任意长度的UTF-8或UTF-16编码的文本数据(字符串)绑定到sqlite3_stmt对象中的SQL语句参数中。函数原型如下:

int sqlite3_bind_text64(
  sqlite3_stmt*, 
  int, 
  const char*, 
  sqlite3_uint64, 
  void(*)(void*)
  , int encoding
);

函数参数含义如下:

- 第一个参数是sqlite3_stmt对象的指针,表示由sqlite3_prepare_v2()函数编译的SQL语句。
- 第二个参数是要绑定的参数的索引,从1开始。
- 第三个参数是待绑定的字符串。
- 第四个参数是待绑定的字符串的长度,以字节为单位。
- 第五个参数是一个函数指针,用于在释放sqlite3_stmt对象前处理存放在其中的文本数据。
- 第六个参数指定文本数据的编码方式,可以是SQLITE_UTF8或SQLITE_UTF16。

下面是一些使用sqlite3_bind_text64函数的示例:

sqlite3_stmt *stmt;
const char *name = "John";
sqlite3_prepare_v3(db, "INSERT INTO student (name, age) VALUES (?, ?)", -1, 0, &stmt, NULL);
sqlite3_bind_text64(stmt, 1, name, strlen(name), SQLITE_STATIC, SQLITE_UTF8);
sqlite3_bind_text64(stmt, 2, "20", -1, SQLITE_STATIC, SQLITE_UTF8);
sqlite3_step(stmt);
sqlite3_finalize(stmt);

该示例程序使用sqlite3_bind_text64函数向预处理的SQL语句中绑定任意长度的字符串数据。第二个参数指定了要绑定的参数的索引,从1开始。第三个参数是要绑定的字符串数据,第四个参数是字符串长度。第五个参数是一个回调函数,用于在释放sqlite3_stmt对象前处理存放在其中的文本数据。如果文本数据是静态的,可以将第五个参数设置为SQLITE_STATIC。如果使用UTF-16编码,则需要将第六个参数设置为SQLITE_UTF16。

14. sqlite3_bind_value函数

sqlite3_bind_value函数用于将sqlite3_value对象绑定到sqlite3_stmt对象中的SQL语句参数中。sqlite3_value对象可以获取单个列的值。函数原型如下:

int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);

函数参数含义如下:

- 第一个参数是sqlite3_stmt对象的指针,表示由sqlite3_prepare_v2()函数编译的SQL语句。
- 第二个参数是要绑定的参数的索引,从1开始。
- 第三个参数是sqlite3_value对象的指针,它包含要绑定到参数的单个SQL值。

下面是一个使用sqlite3_bind_value函数的示例:

sqlite3_stmt *stmt;
sqlite3_prepare_v2(db, "SELECT name, age FROM student WHERE id=?", -1, &stmt, NULL);
sqlite3_bind_int(stmt, 1, 1);
int step_result = sqlite3_step(stmt);
while(step_result == SQLITE_ROW) {
    const char *name = (const char*)sqlite3_column_text(stmt, 0);
    int age = sqlite3_column_int(stmt, 1);
    sqlite3_value *id_value = sqlite3_column_value(stmt, 2);
    sqlite3_bind_value(stmt, 1, id_value);
    step_result = sqlite3_step(stmt);
}
sqlite3_finalize(stmt);

该示例程序使用sqlite3_bind_value函数向预处理的SQL语句中绑定列值。第二个参数指定了要绑定的参数的索引,从1开始。第三个参数是一个sqlite3_value对象的指针,它由sqlite3_column_value()函数返回。

15. sqlite3_bind_zeroblob函数

sqlite3_bind_zeroblob函数用于将大小为N的0填充BLOB数据绑定到sqlite3_stmt对象中的SQL语句参数中。函数原型如下:

int sqlite3_bind_zeroblob(
  sqlite3_stmt*, 
  int, 
  int n
);

函数参数含义如下:

- 第一个参数是sqlite3_stmt对象的指针,表示由sqlite3_prepare_v2()函数编译的SQL语句。
- 第二个参数是要绑定的参数的索引,从1开始。
- 第三个参数是要绑定的0填充BLOB数据的大小,以字节为单位。

下面是一个使用sqlite3_bind_zeroblob函数的示例:

sqlite3_stmt *stmt;
sqlite3_prepare_v2(db, "INSERT INTO image (data) VALUES (?)", -1, &stmt, NULL);
sqlite3_bind_zeroblob(stmt, 1, 1024);
sqlite3_step(stmt);
sqlite3_finalize(stmt);

该示例程序使用sqlite3_bind_zeroblob函数向预处理的SQL语句中绑定大小为1024字节的0填充BLOB数据。

16. sqlite3_bind_zeroblob64函数

sqlite3_bind_zeroblob64函数用于将任意长度的大小为N的0填充BLOB数据绑定到sqlite3_stmt对象中的SQL语句参数中。函数原型如下:

int sqlite3_bind_zeroblob64(
  sqlite3_stmt*,
  int,
  sqlite3_uint64
);

函数参数含义如下:

- 第一个参数是sqlite3_stmt对象的指针,表示由sqlite3_prepare_v2()函数编译的SQL语句。
- 第二个参数是要绑定的参数的索引,从1开始。
- 第三个参数是要绑定的0填充BLOB数据的大小,以字节为单位。

下面是一个使用sqlite3_bind_zeroblob64函数的示例:

sqlite3_stmt *stmt;
sqlite3_prepare_v2(db, "INSERT INTO image (data) VALUES (?)", -1, &stmt, NULL);
sqlite3_bind_zeroblob64(stmt, 1, 1024);
sqlite3_step(stmt);
sqlite3_finalize(stmt);

该示例程序使用sqlite3_bind_zeroblob64函数向预处理的SQL语句中绑定大小为1024字节的0填充BLOB数据。


 

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

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

相关文章

推荐一款管理hosts文件的利器

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

windows下不同python版本切换

一、简介 有时候在windows环境下会安装很多个不同的Python版本,但是在运行一些特定环境时,又需要特定的python版本。于是就需要切换Python版本。 二、实操 右键“我的电脑”-》属性 右侧“高级系统设置” “高级”-》“环境变量” 双击“Path” 可以看到…

计算机视觉之三维重建(2)---摄像机标定

文章目录 一、回顾线代1.1 线性方程组的解1.2 齐次线性方程组的解 二、透镜摄像机的标定2.1 标定过程2.2 提取摄像机参数2.3 参数总结 三、径向畸变的摄像机标定3.1 建模3.2 求解 四、变换4.1 2D平面上的欧式变换4.2 2D平面上的相似变换和仿射变换4.3 2D平面上的透射变换4.4 3D…

深入浅出前端本地储存(1)

引言 2021 年,如果你的前端应用,需要在浏览器上保存数据,有三个主流方案: CookieWeb Storage (LocalStorage)IndexedDB 这些方案就是如今应用最广、浏览器兼容性最高的三种前端储存方案 今天这篇文章就聊一聊这三种方案的历史…

全球首例AI软件工程师Devin:Cognition AI引领智能编程新纪元

近日,初创企业Cognition AI震撼发布了全球首位AI软件工程师——Devin,这一开创性的突破标志着人工智能在编程与软件开发领域的应用迈上了全新的台阶。Devin以其卓越的计算机推理与规划能力,正在重新定义我们对软件工程实践的理解。 Devin&am…

软件设计师:03 - 数据库系统

一、数据模型的分类 1.1、概念数据模型 1.2、结构数据模型 1.3 真题 二、三级模式 概念模式对应的是基本表,概念模式也称为模式 外模式对应的是视图,也称用户模式或者子模式 内模式对应的是数据库里面的存储文件,也称存储模式 真题 三、两级…

漏洞发现-漏扫项目篇Poc开发Yaml语法反链判断不回显检测Yaml生成

知识点 1、Xray&Afrog-Poc开发-环境配置&编写流程 2、Xray-Poc开发-数据回显&RCE不回显&实验室 3、Afrog-Poc开发-数据回显&RCE不回显&JDNI注入 章节点: 漏洞发现-Web&框架组件&中间件&APP&小程序&系统 扫描项目-综合…

三连杆滑块机构运动学仿真 | 【Matlab源码+理论公式文本】|曲柄滑块 | 曲柄连杆 | 机械连杆

【程序简介】💻🔍 本程序通过matlab实现了三连杆滑块机构的运动学仿真编程,动态展现了三连杆机构的运动动画,同时给出了角位移、角速度和角加速度的时程曲线,除了程序本身,还提供了机构运动学公式推导文档…

防火墙互联技术

1.防火墙基础配置 2.配置防火墙远程管理 3.配置防火墙管理员角色 4.配置防火墙系统时钟 抓包

自动化测试报告生成(Allure)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 之前尝试使用过testNG自带的测试报告、优化过reportNG的测试报告…

备战蓝桥杯D33 - 真题 - 松散子序列

题目描述 解题思路 ps:思路是我看了大佬的题解后自己的理解,自己给自己捋清楚思路。 1.设置输入,将字符串输入 2.因为输入的是字符,但要找出字符的最大价值,所以先将字符串转化成对应的数值。 这时候就要用到ord函…

基于SSM的宿舍管理系统的设计与实现(JSP,MySQL)

摘 要 随着社会发展、信息技术的普及,人们日常管理工作也发生了巨大的变化。信息化技术之渗透各行业的方方面面。学生宿舍管理作为校园管理工作的重要一环,不仅关系到学生自身的确切利益,同时也是对校园管理工作重大考验。近来年由于在校学生…

YOLOv9改进策略:卷积魔改 | 分布移位卷积(DSConv),提高卷积层的内存效率和速度

💡💡💡本文改进内容: YOLOv9如何魔改卷积进一步提升检测精度?提出了一种卷积的变体,称为DSConv(分布偏移卷积),其可以容易地替换进标准神经网络体系结构并且实现较低的存…

MISC:常见编码

一、字符编码 1.ASCII码 使用指定7位或8位二进制数组合表示128-256种可能。 常⻅考点:解题过程中给出十进制或十六进制的连续数值。 进制转换工具: ASCII text,Hex,Binary,Decimal,Base64 converter (rapidtables.com) 2.Base64编码 ASCII编码以8个比特…

RISC-V架构的三种特权模式如何切换

1、RISC-V的三种特权模式 特权模式功能描述机器模式(M-mode)具有最高特权等级,具有访问所有资源的权限,通常运行固件和内核用户模式(U-mode)权限要比M模式低,通常是用来运行操作系统内核管理员…

sqlserver列出表的所有字段名

1、纵向列出所有字段 SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME tablename;2、横向列车所有字段,以‘,’分隔 SELECT STUFF((SELECT , column_nameFROM information_schema.columnsWHERE table_name tablenameFOR XM…

C++进阶:二叉搜索树介绍、模拟实现(递归迭代两版本)及其应用

上次介绍完多态后:C进阶:详解多态(多态、虚函数、抽象类以及虚函数原理详解) 也是要开始继续学习了 文章目录 1.二叉搜索树1.1概念1.2二叉搜索树特性1.3 二叉搜索树的操作 2.模拟实现2.1项目文件规划2.2基本结构2.3各种接口、功能…

【C语言】—— 指针三 : 参透数组传参的本质

【C语言】—— 指针三 : 参透数组传参的本质 一、数组名的理解二、使用指针访问数组2.1、指针访问数组2.2、[ ] 的深入理解2.3、数组与指针的区别 三、一维数组的传参本质四、数组指针变量4.1、数组指针变量是什么4.2、 数组指针的初始化 五、二维数组传参的本质 一…

DML - 增删改(insert into,delete,update)

引言:对比DB / 表结构 : create , drop , alter 本次记录 数据操作 语言: 1.进入 hive 数据库,再打开 ryx1 表 2. insert select 3. update select 4. delete select

外卖项目:使用AOP切面编程实现增删改查的操作日志记录(debug断点调试)

文章目录 一、问题描述二、问题分析三、断掉调试四、代码展示 一、问题描述 需求:将项目中增、删、改相关接口的操作日志记录到数据库表中。 操作日志信息包含: 操作人、操作时间、执行方法的全类名、执行方法名、方法运行时参数、返回值、方法执行时…