int sqlite3_get_table(
sqlite3 *db, /* An open database */
const char *zSql, /* SQL to be evaluated */
char ***pazResult, /* Results of the query */
int *pnRow, /* Number of result rows written here */
int *pnColumn, /* Number of result columns written here */
char **pzErrmsg /* Error msg written here */
);
void sqlite3_free_table(char **result);
第1个参数不再多说,是一个很普通的以\0结尾的char*字符串。
第3个参数是查询结果,它依然一维数组(不要以为是二维数组,更不要以为是三维数组)。它内存布局是:字段名称,后面是紧接着是每个字段的值。下面用例子来说事。
第4个参数是查询出多少条记录(即查出多少行,不包括字段名那行)。 第5个参数是多少个字段(多少列)。
第6个参数是错误信息,跟前面一样,这里不多说了。pazResult返回的字符串数量实际上是(pnRow+1)(*pnColumn),因为前(*pnColumn)个是字段名
举例:
建表
"CREATE TABLE userlistinfo (id INTEGER PRIMARY KEY,"
"policeNo TEXT, policeName TEXT, deviceNo TEXT, permission INTEGER);";
----±-------- -----±---------------±------------±--------------+
| id | policeNo | policeName | deviceNo |permission
----±-------- -----±---------------±------------±--------------+
| 1 | 01 | jack | 9527 | 1 |
| 2 |
| 3 |
| 4 |
| 5 |
----±-------- —±----------------±------------±--------------+
char sqlCmd[CMDBUFSIZE] =