使用C++检索SQL表行数

Ver*_*ung 3 c++ sql sqlite ubuntu-13.04

我是Ubuntu上使用sqlite3的C++新手.

我想得到SQL表的行数,所以我想在C++中执行这个命令"SELECT COUNT(*)FROM Table",这样我就可以在其他方法中使用该行计数.

dwu*_*urf 5

c/c ++ API使用回调,如文档所述.您可以使用*pArg参数在回调和主代码之间传递值.我稍微修改了他们文档中的代码以获取行数.

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

static int callback(void *count, int argc, char **argv, char **azColName) {
    int *c = count;
    *c = atoi(argv[0]);
    return 0;
}

int main(int argc, char **argv) {
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;
    int count = 0;

    rc = sqlite3_open("test.db", &db);
    if (rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return(1);
    }
    rc = sqlite3_exec(db, "select count(*) from mytable", callback, &count, &zErrMsg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    } else {
        printf("count: %d\n", count);
    }
    sqlite3_close(db);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)