如何更新SQLite Blob列

时间:2018-06-21 16:16:04

标签: c++ sqlite blob

我在SQLite中有一个表,其中包含一个BLOB列和一个ID列。在我的程序中,我需要首先设置ID(主键),这是通过以下方式进行的:

        std::string sql_s = "INSERT INTO SIGNANTE (ID)" \
            "VALUES (" + id_s +"); ";
        const char * sql = sql_s.c_str();

        rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);

此后,我想用BLOB更新条目,并且这样做:

        sqlite3_stmt* stmtInsert = nullptr;
        std::string photo_sql = "UPDATE SIGNANTE set (FOTO) VALUES (?) where ID=" + id_s + " ;";
        const char * photo_char = photo_sql.c_str();

        sqlite3_prepare_v2(db, photo_char, -1, &stmtInsert, nullptr);
        sqlite3_bind_blob(stmtInsert, 1, blobData->Data, blobData->Length, SQLITE_STATIC);

如果我尝试插入而不是UPDATE(不带“ where ID =“ + id_s +”;“”),则一切正常,但是如果我对其进行更新,则在下一行会收到错误消息:

 if(sqlite3_step(stmtInsert)==SQLITE_DONE){
  TextOut->Text = "it worked";
  }

我在“ wstring”中收到“访问冲突”。

我的问题是,如何更新具有给定ID(或任何其他主键)的BLOB条目的SQLite。

0 个答案:

没有答案