在 SQLite3 中使用回调函数
2019独角兽企业重金招聘Python工程师标准>>>
回调函数的格式如下:
int sqlite_callback(
void* pv, /* 由 sqlite3_exec() 的第四个参数传递而来 */
int argc, /* 表的列数 */
char** argv, /* 指向查询结果的指针数组, 可以由 sqlite3_column_text() 得到 */
char** col /* 指向表头名的指针数组, 可以由 sqlite3_column_name() 得到 */
);
参数格式:
传给sqlite3_exec的回调函数,用来显示查询结果
对每一条查询结果调用一次该回调函数
参数:
pv:由sqlite3_exec传递的初始化参数
argc:表头的列数
col:表头的名字数组指针
argv:表头的数据数组指针
返回值:
1:中断查找
0:继续列举查询到的数据
示例表:
+-----------------------------------+
| id | pic | data(16进制数据) |
|-----------------------------------|
| 1 | a.jpg | 00 00 00 ... |
|-----------------------------------|
| 2 | b.jpg | XX XX XX |
+-----------------------------------+
对第一行数据:
argc=3 即 [0]...[2]
argv[0]="1",argv[1]="a.jpg",argv[2]="00 00 00..."(实际16进制数据,非这里显示的字符串形式)
col[0]="id",col[1]="pic",col[2]="data"
说明:
sqlite3_exec() 的回调函数必须按照此格式, 当然形参的名字任意.
如果某列的数据类型不是char*, 则可以对结果执行相关的转换, 如:用atoi()把结果转换为整数(integer), 如果是二进制数据, 则可以直接强制类型转换, 如:(void*)argv[i].
该回调函数有两种返回值类型.
1.返回零:sqlite3_exec() 将继续执行查询.
2.返回非零:sqlite3_exec()将立即中断查询, 且 sqlite3_exec() 将返回 SQLITE_ABORT.
示例:
int i;
for(i=0; i<argc; i++)
{
printf("%s\t%s\n\n", col[i], argv[i]);
}
转载于:https://my.oschina.net/u/193027/blog/386637
在 SQLite3 中使用回调函数相关推荐
- Java中的回调函数学习-深入浅出
Java中的回调函数一般来说分为下面几步: 声明回调函数的统一接口interface A.包括方法callback(); 在调用类caller内将该接口设置为私有成员private A XXX; 在c ...
- 理解与使用Javascript中的回调函数
在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用.既然函数实际上是对象:它们能被"存储"在变量中,能作为函数参数被传递,能在函数中被创建, ...
- 理解javascript中的回调函数(callback)【转】
在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...
- 关于javascript中的回调函数
关于javascript中的回调函数 原文地址:http://blog.csdn.net/sicluoyi/article/details/1737969 考虑一个这样的例子: 假如某个项目的底层和高 ...
- 【JavaScript】理解与使用Javascript中的回调函数
在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用.既然函数实际上是对象:它们能被"存储"在变量中,能作为函数参数被传递,能在函数中被创建, ...
- memcpy函数_如何理解c语言中的回调函数
在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 这段话不是那么好理解,不同语言实现回调的方式有些许不 ...
- keras中的回调函数
keras训练 fit(self, x, y, batch_size=32, nb_epoch=10, verbose=1, callbacks=[], validation_split=0.0, v ...
- 什么是JavaScript中的回调函数?
This article gives a brief introduction to the concept and usage of callback functions in the JavaSc ...
- vue 执行函数this_在vue中使用回调函数,this调用无效的解决
let self = this //使用新变量替换this,以免this无效 //updatestudentinfotoserver是一个将本身部分数据异步上传的接口,接收三个参数,其中第一个是数据, ...
最新文章
- 什么是OpenMAX技术分析OpenMAX
- Web前沿—HTML5 Form Data 对象的使用
- 功能式Python中的探索性数据分析
- 第四章:Spring AOP
- 服务器 .err文件,IIS 关闭HTTPERR(IIS日志)的方法
- 软件的极简主义的三个大敌:配置文件,冗余的参数,和大量复杂的接口。
- Installing OwnCloud 9 on Debian 8
- 如何创建和配置SQL Server代理警报
- idea中git替换,推送到新的github或者gitlab上面
- 1月17日云栖精选夜读:阿里云云数据库开了一个未来大会,谈了谈2038年的数据库趋势...
- Wannafly挑战赛26 A B
- 字符串运用-密码截取
- 淘宝广告数据分析实战!(附代码和100W数据源)
- 数字藏品:传承优秀传统文化的新载体
- Linux 关闭 开启防火墙命令
- 股票证券交易系统架构分析与设计
- 十大宽带共享组网方式(转)
- linux内核调试环境搭建-
- 高斯消元法(高斯·约当消元法)(浮点)
- 网络游戏外挂编写原理
热门文章
- Object(包装对象)
- mysql bundle 安装_阿里云服务器下安装MySQL (Bundle压缩包 安装)
- 对文件指定行进行编辑和保存 linux,linux 文本编辑命令grep sed awk(转)
- InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具
- STA 137 Topics covered this week
- jmeter接口测试----8用户定义的变量
- 【Docker】Segmentation Fault or Critical Error encountered. Dumping core and abort
- Fragment:关于Avoid non-default constructors in fragments的错误
- 矩阵经典题目六:poj 3070 Fibonacci
- Codechef之CodeCraft: IIIT Hyderabad