c - 如何使用 sqlite3 C API 插入多个 blob?

标签 c sqlite blob

这是我正在使用的表的架构

CREATE TABLE clauses(id INTEGER PRIMARY KEY, content BLOB)

我想在该表中插入大量记录。我在想类似的事情

void insert_records(sqlite3* db) {
    int clause[CLAUSE_SIZE];
    char sql[] = "INSERT INTO clauses(content) VALUES(?)";
    sqlite3_stmt* stmt = NULL;

    if (sqlite3_prepare(db, sql, -1, &stmt, NULL) != SQLITE_OK) {
        fprintf(stderr, "error in prepare : %s\n", sqlite3_errmsg(db));
        exit(1);
    }

    if (sqlite3_bind_blob(stmt, 1, clause, sizeof(clause), SQLITE_STATIC) != SQLITE_OK) {
        fprintf(stderr, "error in bind : %s\n", sqlite3_errmsg(db));
        exit(1);
    }

    for (int i = 0 ; i < nb_clauses ; i++) {
       gen_clause(clause);

       if (sqlite3_step(stmt) != SQLITE_DONE) {
           fprintf(stderr, "error in step : %s\n", sqlite3_errmsg(db));
           exit(1);
       }
    }

    sqlite3_finalize(stmt);
 }

但这不起作用:仅插入第一项,在第二次迭代中,程序因“步骤错误:未知错误”而终止。

问题是什么?

最佳答案

您必须调用 sqlite3_reset在您可以重新执行准备好的语句之前。

关于c - 如何使用 sqlite3 C API 插入多个 blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16965529/

相关文章:

image - 使用 grails 和 oracle 保存和显示 blob 数据

c - 将数字映射到 C 中的位位置

c - 使用 C 从用户那里获取一些字符串输入

android - 自动备份 SQLite 数据库

android.database.sqlite.SQLITeException : no such table: admin while compiling: INSERT INTO . ..等

javascript - 使用 jQtouch 的 Web 应用程序中的 SQLite

javascript - BLOB URL 在 Safari 中不起作用

javascript - 错误代码 2,安全错误 : typescript blob

c - 使用环境变量的缓冲区溢出

c - 在处理 C 结构数组时,(*(data+i)).member 是否与 data[i].member 相同?