intDB::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]);sqli...
sqlite3_get_table主要是用于非回调的方式进行select查询,参数如下; 参数1:打开数据库得到的指针; 参数2:一条sql语句,跟sqlite3_exec中一样; 参数3:查询的数据结果,他是一个指针数组,内存分布为:字段名称,后面是紧接着是每个字段的值; 参数4:查询到的数据条数,(行数); 参数5:查询到的字段数,(列数); 参...
void sqlite3_free_table(char 1. 2. 3. 4. 5. 6. 7. 8. 9. 第1个参数不再多说,看前面的例子。 第2个参数是sql 语句,跟sqlite3_exec 里的sql 是一样的。是一个很普通的以\0结尾的char*字符串。 第3个参数是查询结果,它依然一维数组(不要以为是二维数组,更不要以为是三维数组)。它内存布局是...
第6个参数是错误信息,跟前面一样,这里不多说了。 pazResult返回的字符串数量实际上是(*pnRow+1)*(*pnColumn),因为前(*pnColumn)个是字段名 修改上篇的例子,使用sqlite3_get_table,来去的结果集: 1#include <iostream>2usingnamespacestd;3#include"sqlite/sqlite3.h"4intcallback(void*,int,char**,char*...
char** CSqlApi::QueryFields(const char* pszTabName, int* piRowNum, int* piColNum) { int iRet; char sql[128] = { 0 }; char** ppszResults; char* pszErrMsg; sprintf(sql, "SELECT * FROM %s LIMIT 1", pszTabName); if ((iRet = sqlite3_get_table(m_pdb, sql, &ppszResults,...
int sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp, int*nrow, int *ncolumn, char **errmsg); 功能: 执行SQL操作 参数: db:数据库句柄 sql:SQL语句 resultp:用来指向sql执行结果的指针 nrow:满足条件的记录的数目 ncolumn:每条记录包含的字段数目 ...
sqlite3sqlite3_get_table() 最近在做一个wince小程序,用到sqlite3,用到查询时疑惑不解,请助大家. sqlite3有个sqlite3_get_table()的函数,可执行查询并返回结果,其原型为: sqlite3_get_table(sqlite3*,constchar*sql,char***resultp,int*nrow,int* ncolumn,char**errmsg); 其中第二个参数为constchar*类...
The Smelly Car | 28 The Fusilli Jerry | 21 那么result数组的格式如下 result [0] = "name";result [1] = "id";result [2] = "The Junior Mint";result [3] = "43";result [4] = "The Smelly Car";result [5] = "28";result [6] = "The Fusilli Jerry";result [7] = ...
简单的删除操作可以直接使用sqlite3_exec即可。这里不需要回调函数以及回调函数的参数。 当然需要可以关注sqlite3_exec返回的结果是否为SQLITE_OK的值。 const char *sql_drop_table="drop table if exists t"; const char *sql_create_table="create table t(id int primary key,msg varchar(128))"; ...