我在同一个数据库上有 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 ");
}
我登录时成功插入数据。
但是当我使用相同的代码插入第二个表时,没有插入数据我得到日志
NSLog(@"-------data insertion failed")
我还在每次操作时打开和关闭数据库并释放句柄。
我认为 sqlite 不允许我在数据库上写,但不明白为什么?由于我已经关闭了早期操作的数据库。
有没有人遇到相同的问题,没有为同一数据库文件上的第二个表插入数据。
补充说明:没有语法错误,如果我不在第一个表上插入,那么插入是在第二个表上完成的,这很奇怪。