数据库
首页 > 数据库> > 常见sqlite3 API的简单使用(2)

常见sqlite3 API的简单使用(2)

作者:互联网

sqlite3_get_table

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);

官网不推荐使用这个API,官网不推荐使用这个API,官网不推荐使用这个API。

使用该API可以得到一个结果表。结果表包含全部的查询结果,是一个含有指针的数组。

数组地址由azResult得到, 我们传入的是&azResult 。

每个指针指向一个查询数据(字符串形式)。

例子(官网):

查询到的结果如下。

    Name        | Age
    -----------------------
    Alice       | 43
    Bob         | 28
    Cindy       | 21

azResult 如下。

azResult[0] = "Name";
azResult[1] = "Age";
azResult[2] = "Alice";
azResult[3] = "43";
azResult[4] = "Bob";
azResult[5] = "28";
azResult[6] = "Cindy";
azResult[7] = "21";

查询结果的行数由nRow得到,我们传入的是&nRow 。(nRow = 3)

查询结果的列数由nColumn得到,------------------------。(nColumn = 2)

注意注意注意

用完之后需要使用  sqlite3_free_table 释放 azResult 上 的内存。

用完之后需要使用  sqlite3_free_table 释放 azResult 上 的内存。

用完之后需要使用  sqlite3_free_table 释放 azResult 上 的内存。

返回

成功执行返回 SQLITE_OK

测试实例

#include <iostream>
#include <stdio.h>
#include "sqlite3.h"

using namespace std;

int main()
{
        sqlite3 * db;
        char **azResult;
        int nRow, nColumn;
        int rv = sqlite3_open("./test.db", &db);
        if(rv != SQLITE_OK){
                fprintf(stderr, "db can't open\n");
                return -1;
        }

        rv = sqlite3_get_table(db, "select * from user", &azResult, &nRow, &nColumn, nullptr);
        if(rv != SQLITE_OK) {
                fprintf(stderr, "func failed\n");
                return -2;
        }
        int left = 0;
        for(int i = 0; i < nRow + 1; i++){
                for(int j = 0; j < nColumn; j++){
                        printf("%s\t\t\t", azResult[left++]);
                }
                cout << endl;
        }
        sqlite3_free_table(azResult);
        sqlite3_close(db);
        return 0;
}

 

 

 

Name        | Age
-----------------------
Alice       | 43
Bob         | 28
Cindy       | 21

标签:nRow,int,常见,db,API,sqlite3,table,azResult
来源: https://www.cnblogs.com/sau-autumnwind/p/13934236.html