簡體   English   中英

如何使用sqlite3 C API插入許多blob?

[英]How can I insert many blobs with sqlite3 C API?

這是我正在使用的表格的架構

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM