iOS経由でSQLiteデータベースに実際にデータを挿入するためにこのコードを取得するのに問題があります:
NSString* inssql = [NSString stringWithFormat:@"INSERT OR IGNORE INTO roomData VALUES ('%@', '%i', '%@', '%@', '%@', '%@'); UPDATE roomData SET roomNumber='%@', roomName='%@', roomDesc='%@', roomHash='%@' WHERE roomID = '%@'", [row objectAtIndex:0],property,[row objectAtIndex:1],[row objectAtIndex:2],[row objectAtIndex:3],[row objectAtIndex:4],[row objectAtIndex:1],[row objectAtIndex:2],[row objectAtIndex:3],[row objectAtIndex:4],[row objectAtIndex:0]];
sql = [inssql UTF8String];
if (sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK) {
NSLog(@"MESSAGE: Could not prepare this insert, %s", sqlite3_errmsg(db));
} else {
if (sqlite3_step(sqlStatement) == SQLITE_DONE)
{
NSLog(@"MESSAGE: Successful insert, %@, %d", [row objectAtIndex:0], sqlite3_step(sqlStatement));
} else {
NSLog(@"MESSAGE: Failed insert, %s", sqlite3_errmsg(db));
}
}
「挿入に成功しました」というメッセージが表示されますが、データベースにデータがありません。何が起きているのか分かりますか?SQLiteを使用するのはこれが初めてです。
編集#1:
また、次の構文を試しました。
sql = "INSERT INTO roomData VALUES (?)";
sqlite3_prepare(db, sql, -1, &sqlStatement, NULL);
sqlite3_bind_int(sqlStatement, 1, 2);
if(sqlite3_step(sqlStatement)) { NSLog(@"DONE!"); } else { NSLog(@"FAIL: %s",sqlite3_errmsg(db)); }
「DONE!」が表示されますが、データベースはまだ空です。
編集#2:
私はもともと、アプリケーションバンドルに保存されていたデータベースを変更しようとしていました。間違いですよね?そこで、データベースをLibraryディレクトリにコピーし、代わりにそのコピーを使用するスクリプトをインストールしました。ただし、スクリプトはデータベースにレコードを挿入しません。ここで何が欠けていますか?