gpt4 book ai didi

iphone - 如果我调用此方法,则会收到错误 "database is lock"。我该如何解决这个问题?请帮我

转载 作者:行者123 更新时间:2023-11-29 13:24:35 25 4
gpt4 key购买 nike

如果我调用 -(void)insertDataIntoAssemblyAssessment 方法,其中 finalAssembIdArr 是一个数组,其中必须有多个值,那么我会得到一个错误,它是“数据库已锁定”。但是,如果 finalAssembIdArr 中只有一个值,则该值成功存储到数据库中。

我该如何解决这个问题??请帮助我。

-(void)insertDataIntoAssemblyAssessment
{
sqlite3_stmt *fstatement;
const char *dbpath = [databasePath UTF8String];
for(int cnt=0; cnt < [finalAssembIdArr count]; cnt++)
{
finalAsmbId2=[finalAssembIdArr objectAtIndex:cnt];

NSLog(@"finalAsmbId2...%@",finalAsmbId2);
NSLog(@"finalAssessmentIdSt2...%@",finalAssessmentIdSt2);
NSLog(@"finalFacIdSt2...%@",finalFacIdSt2);
NSLog(@"finalSpaceIdSt2...%@",finalSpaceIdSt2);

if (sqlite3_open(dbpath, &ipadSites) == SQLITE_OK)
{
NSLog(@"db opened for AssemblyAssessment..");

NSString *insertfSQL = [NSString stringWithFormat:@"INSERT INTO AssemblyAssessment (assessmentid,spaceid,assemblyid,FacilityID) VALUES (\"%@\",\"%@\",\"%@\",\"%@\")",self.finalAssessmentIdSt2,self.finalSpaceIdSt2,self.finalAsmbId2,self.finalFacIdSt2];

NSLog(@"insertfSQL...%@",insertfSQL);


const char *insert_fstmt = [insertfSQL UTF8String];
sqlite3_prepare_v2(ipadSites,insert_fstmt,-1,&fstatement,NULL);
NSLog(@"inserting AssemblyAssessment..");

if (sqlite3_step(fstatement) == SQLITE_DONE)
{
NSLog(@"Add value in AssemblyAssessment...");

}
else
{
NSLog(@"Insert failed: %s", sqlite3_errmsg(ipadSites));
NSLog(@"Failed to add value in AssemblyAssessment...");
}
}

sqlite3_finalize(fstatement);
sqlite3_close(ipadSites);

}
}

最佳答案

请...!不要像那样在循环中打开/关闭 SQLite 连接!从“FOR 循环”外部打开数据库句柄。请看这里how to insert data into data base in iphone在这里 How to insert NSMutableArray elements in Sqlite3 in iPhone

而且,对于基本的 CRUD(创建、读取、更新、删除),我建议你..看看 FMDB

关于iphone - 如果我调用此方法,则会收到错误 "database is lock"。我该如何解决这个问题?请帮我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13467794/

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