c - Sqlite C接口(interface)获取单值结果

标签 c sqlite

当我输入 Sqlite 时

SELECT Count(*) FROM tabl;

它返回一个数字。

准备语句后如何使用C接口(interface)获取这个数?

最佳答案

打开数据库文件,准备语句,执行步骤(即,如果结果中有多行,则必须逐行获取它们),提取列值,完成语句,关闭数据库。

像这样:

sqlite3_stmt* stmt = NULL;

sqlite3* local_db = NULL;

sqlite3_open("filename.sqlite", &local_db);

int retval, idx;
char sql[2048];

sprintf(sql, "select Something from Somewhere;");

// execute statement
retval = sqlite3_prepare_v2(local_db, sql, -1, &stmt, 0);

if(retval)
{
    printf("Selecting data from DB Failed (err_code=%d)\n", retval);
    return;
}

// iterate rows
idx = 0;

// for multiple results
while(1)
{
    // fetch a row's status
    retval = sqlite3_step(stmt);

    if(retval == SQLITE_ROW)
    {
        Something =
             (int)sqlite3_column_int(stmt, 0);
             // or other type - sqlite3_column_text etc.
        // ... fetch other columns, if there are any
    }
    else if(retval == SQLITE_DONE)
    {
        break;
    }
    else
    {
        sqlite3_finalize(stmt);
        printf("Some error encountered\n");
        break;
    }
}

sqlite3_finalize(stmt);

sqlite3_close(local_db);

使用此代码,查找所有 API 调用(open、prepare_v2、step、column、finalize)。

如果这很难,那么首先您应该熟悉 C 本身。

关于c - Sqlite C接口(interface)获取单值结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11637701/

相关文章:

sqlite - Sqlite-时间段的计算

ruby-on-rails - 加载Rails固定装置时获取“没有命名为列”

c - FFmpeg C API - 同步视频和音频

android - 如何在sqlite for android中实现一对多的对象数据库

c++ - 如何在不继承句柄的情况下 fork 进程?

c - fork 示例输出

ruby - 从 sinatra 和 ruby​​ 的下拉框中传递值

php - Phar 存档中的 SQLite 数据库

c - 违反完整性 - 尝试存储到 protected 内存中

c - 为什么未定义大小的数组只允许在 main() 中使用?