同じデータベースに 2 つのテーブルがあります。
最初のテーブル データは、以下のコードを使用して正常に挿入されます。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:@"test.sqlite"];
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
(sqlite3_exec(database, "BEGIN TRANSACTION", 0, 0, 0))==SQLITE_OK
if ( sqlite3_exec(database, [insertStatement UTF8String], NULL, NULL, &error) == SQLITE_OK)
{
NSLog(@"------- inserted here ----");
}
else
{
NSLog(@"Error: %s", error);
if(sqlite3_exec(database, "COMMIT", 0, 0, 0) ==SQLITE_OK){
NSLog(@"-------data sucessfully inserted ");
}
else {
NSLog(@"-------data insertion failed");
sqlite3_exec(database, "ROLLBACK", 0, 0, 0);
}
(sqlite3_exec(database, "END TRANSACTION", 0, 0, 0));
sqlite3_close(database);
}
else {
NSLog(@"-------sqlite open error ");
}
ログに記録すると、データが正常に挿入されます。
しかし、2番目のテーブルに挿入するために同じコードを使用すると、データが挿入されず、ログが取得されます
NSLog(@"-------data insertion failed")
また、各操作でデータベースを開閉し、ハンドルを解放しています。
sqlite でデータベースへの書き込みが許可されていないと思いますが、その理由がわかりません。以前の操作でデータベースを閉じたので。
同じデータベースファイルの2番目のテーブルにデータが挿入されないという同じ問題に遭遇した人はいますか?
追記: 構文エラーはありません。1 番目のテーブルに挿入しないと、2 番目のテーブルに挿入されますが、これは奇妙です。