在 SQLite3 中使用回调函数
回调函数的格式如下: 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("%st%snn",col[i],argv[i]); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- TX2440 ARM开发板Uboot移植(二、让u-boot从nandFlash动起来
- ruby-on-rails – 在rufus-scheduler中使用ActiveRecord对象
- clojurescript – 在Reagent中使用React组件
- PostgreSQL递归查询实现树状结构查询
- xml.etree.ElementTree
- ruby-on-rails – 带有别名表名的ActiveRecord查询
- c# – ASP.NET Core 1(RTM)中的自定义DateTime模型绑定器
- ruby-on-rails – Rails 3.2.x关联和attr_accessible
- c# – 如何在WPF MVVM中单击此按钮?
- 关于FastJson bean中首字母大写与二层bean的问题。