C++ 从SQLite获取int值

C++ 从SQLite获取int值,c++,c,sqlite,int,C++,C,Sqlite,Int,我听说使用sqlite3\u prepare\u v2而不是sqlite\u exec从数据库中获取整数,但我没有找到任何示例。佩奇也没有什么帮助。现在我从数据库中获取字符串,所以我需要用atoi解析它们,这似乎很慢,而且效率也很低。 有很多类似的问题,但都是关于obj-c和iOS SDK的。我需要C/C++提示或示例。 提前感谢。sqlite3\u column\u int(result,columnNum)将从结果的当前行返回一列作为int prepare功能是准备查询,它与结果的解释方式无

我听说使用
sqlite3\u prepare\u v2
而不是
sqlite\u exec
从数据库中获取整数,但我没有找到任何示例。佩奇也没有什么帮助。现在我从数据库中获取字符串,所以我需要用
atoi
解析它们,这似乎很慢,而且效率也很低。 有很多类似的问题,但都是关于obj-c和iOS SDK的。我需要C/C++提示或示例。 提前感谢。

sqlite3\u column\u int(result,columnNum)将从结果的当前行返回一列作为int


prepare功能是准备查询,它与结果的解释方式无关。sqlite3中的所有数据都以文本形式存储,您可以使用适当的函数检索您认为应该是的类型的值。

sqlite3\u prepare
成功后,一定不要忘记使用
sqlite3\u finalize
清理语句。 要获取结果记录,请调用
sqlite3\u步骤
,直到它不返回
SQLITE\u行
。 要获取当前结果记录的值,请调用:


数据。@CL您提供的链接似乎在谈论内部记录格式,而不是用户查看的数据。表示所有内容都是无类型的,只有一个例外,即整数主键列。用户查看的数据仍然具有类型;这就是为什么。
sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(db, "SELECT 42", -1, &stmt, NULL) != SQLITE_OK)
    ...error...
else {
    for (;;) {
        int rc = sqlite3_step(stmt);
        if (rc == SQLITE_DONE)
            break;
        if (rc != SQLITE_ROW) {
            ...error...
            break;
        }
        printf("value: %d\n", sqlite3_column_int(stmt, 0));
    }
    sqlite3_finalize(stmt);
}