gpt4 book ai didi

objective-c - 插入语句不适用于sqlite3 iPhone中的同一数据库上的第二个表

转载 作者:行者123 更新时间:2023-12-01 19:17:53 25 4
gpt4 key购买 nike

我在同一数据库上有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不允许我在数据库上写,但不明白为什么?由于我已经用较早的操作关闭了数据库。

没有人遇到相同的问题,在同一数据库文件上没有第二表的数据插入。

补充说明:没有语法错误,如果我不插入第一张表,那么插入会在第二张表上完成,这很奇怪。

最佳答案

试试这个代码,

-(NSString*) GetDatabasePath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES) ;
NSString *documentsDirectory = [paths objectAtIndex:0] ;
return [documentsDirectory stringByAppendingPathComponent:@"test.sqlite"] ;
}

-(void)InsertPurchase
{
sqlite3_stmt *statement=nil;
NSString *path = [self GetDatabasePath];
NSString *query;

if(sqlite3_open([path UTF8String],&db) == SQLITE_OK)
{
query = [NSString stringWithFormat: @"Your insert query"];

if(sqlite3_prepare_v2(db, [query UTF8String], -1, &statement, NULL)
== SQLITE_OK)
{
sqlite3_step(statement);
}
sqlite3_finalize(statement);
}
sqlite3_close(db);
}

关于objective-c - 插入语句不适用于sqlite3 iPhone中的同一数据库上的第二个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12004105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com