我在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。