sqlite データベースのテーブルを更新しようとしています。int を更新しても問題はありませんが、テキストを挿入 (更新) しました。
-(void)updateItemMemo:(NSString*)text itemID:(int)itemID
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:user_data];
sqlite3* database = NULL;
sqlite3_stmt *statement;
if (sqlite3_open([path UTF8String], &database) == SQLITE_OK)
{
const char *sqlItems=sqlite3_mprintf("UPDATE itemStatus\
SET memo=?\
where refID=?",text,itemID);
if(sqlite3_prepare_v2(database, sqlItems, -1, &statement, NULL) != SQLITE_OK)
sqlite3_bind_text(statement, 1, [text UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_int(statement, 2, itemID);
char* errmsg;
sqlite3_exec(database, "sqlItems", NULL, NULL, &errmsg);
sqlite3_free((char*)errmsg);
if(SQLITE_DONE != sqlite3_step(statement))
sqlite3_finalize(statement);
sqlite3_free((char*)sqlItems);
sqlite3_close(database);
}
else
{
NSLog(@"%s: prepare failed: %s", __FUNCTION__, sqlite3_errmsg(database));
}
}
クエリは正しいです: SQLiteStudio でチェックインし、params をテキストと実際の ID と交換します。できます。問題は、この方法が不可解な理由で機能しないことです。また、エラーは返されません。助けてください。