和sqlite3_exec()这种使用回调函数的方式不同,sqlite3_get_table()的功能要显得更加直接。它通过控制语句的传入,直接将参数赋值给指针传出。来看一下函数原型: Q: 现在,我们要从这组数据中抓取v_id为1001的图片信息(v_pic),怎么办? A: 查询语句:select v_pic from v_table where v_id = 1001 很简单啊,但是通过sqlite3_get_table()该如何反馈? 这三个参数。 所以对于上面那个问题,sqlite3_get_table()结果出来之后,取出dResult[nColnm]的值。 Q:如何总所有数据中提取出第三行、第四列的数据? A:使用select *from v_table 查出结果后,返回dResult[3 * nColnm+2]的值 再问: Q:如果要提取第r行、第n列数据,怎么办? A:返回dResult[r * nColnm +n -1] Q:就这样?那你可以走了 A:急什么?参数进数组之前,当然要判断一下是否越界啦!!! 最后一问: Q:如果返回的数据类型不是char*,是int呢? 最后再说一些: 这个函数的报错可以直接打印errmsg。 查询表中一个int数据 最后,如果需要sqlite3动态链接库,可以到我的动态链接库专栏下自取,配详细教程。
看我的,没后悔啦
①容我重新介绍一下sqlite3_get_teble()函数
#include<sqlite3.h> int sqlite3_get_table(sqlite3* db,char* order,char* **dResult,int *nRow,int *nColnm,char **errmsg); //参数释义 /* db:数据库 order:控制语句 **dResult:二维数组 nRow:查询结果条数 nColnm:每条结果包含多少数据 errmsg:报错信息 */
②从“大数据”中抓取我们需要的数据
上面是我们的“大数据”(别笑,哈哈哈哈哈)。数据库对象为db,表名叫v_table
这里就要讲一下**dResult:二维数组 nRow:查询结果条数 nColnm:每条结果包含多少数据
**dResult是一个二维数组,查询到的结果被存放在这个二维数组中。
这个二维数组是这样安排的:(如果你的查询是:select * from v_table,全部查询)
0~nColnm-1
nColnm~2nColnm-1
2nColnm~3nColnm-1
3nColnm~4nColnm-1
r大于nRow否?n大于nColnm否?
A:类型强转。碧如是int,就用atoi()函数转换。
这个函数的返回值正常是SQLITE_OK(0)
③让我来给你示范一下
int DB::ireturn_multi_serch(char *sql, int r, int c) { char *errMsg; char **dbResult; int nRow = 0, nColumn = 0; int rc; int result; rc = sqlite3_get_table(db,sql,&dbResult,&nRow,&nColumn,&errMsg); if(rc == SQLITE_OK && r<=nRow &&r>0 && c<=nColumn &&c>0) { result = atoi(dbResult[r*nColumn+c-1]); sqlite3_free_table(dbResult); return result; } else { cout<<"第"<<r<<"行,第"<<c<<"条数据无效"<<endl; return NULL; } }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算