将COUNT()查询的结果存储到SQLite中的C ++整数中

时间:2014-01-06 21:10:53

标签: c++ sql sqlite

有人能告诉我是否可以将COUNT()函数的结果存储为C ++中的整数?

这是我的代码:

static int callback(void *data, int argc, char **argv, char **azColName) {
    int i;
    fprintf(stderr, "%s: ", (const char*)data);
    for (i = 0; i < argc; i++) {
        printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return 0;
}

int main(int argc, char* argv[]) {
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;
    char *sql;
    const char* data = "Callback function called";

    /* Open database */
    rc = sqlite3_open("spam.db", &db);
    if (rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        exit(0);
    } else {
        fprintf(stderr, "Opened database successfully\n");
    }

    /* Create SQL statement */
    sql = "SELECT COUNT(*) FROM TEST";

    /* Execute SQL statement */
    rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    } else {
        fprintf(stdout, "Operation done successfully\n");
    }

    sqlite3_close(db);
    return 0;
}

当我运行它时,它返回查询表中的总行数 - 太棒了!但是,当我将函数扩展为与另一个整数进行比较时,是否可以将COUNT()的值存储在稍后可以使用的变量中?

1 个答案:

答案 0 :(得分:1)

您可以在要存储结果的位置使用回调点的data参数,并将传递给回调函数的结果中第一行的第一列提取到此{{1} }:

int