Iphone 如果我调用这个方法,那么我';我得到一个错误,它是;数据库是锁定的;。我怎样才能解决这个问题??请帮帮我

Iphone 如果我调用这个方法,那么我';我得到一个错误,它是;数据库是锁定的;。我怎样才能解决这个问题??请帮帮我,iphone,objective-c,ios,sqlite,Iphone,Objective C,Ios,Sqlite,如果我调用-(void)InsertDataInAssemblyAssemblyAssessment方法,其中finalAssembIdArr是一个数组,其中必须有多个值,那么我将得到一个错误,即“数据库是锁的”。但是,若在finalAssembIdArr中只有一个值,那个么该值将成功地存储在数据库中 我怎样才能解决这个问题??请帮帮我 -(void)insertDataIntoAssemblyAssessment { sqlite3_stmt *fstatement; cons

如果我调用
-(void)InsertDataInAssemblyAssemblyAssessment
方法,其中
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);

    }
}
-(void)将数据插入组件评估
{
sqlite3_stmt*f陈述;
const char*dbpath=[databasePath UTF8String];
对于(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\u打开(dbpath和ipadSites)==SQLITE\u正常)
{
NSLog(@“数据库已打开以进行评估”);
NSString*insertfSQL=[NSString stringWithFormat:@“插入AssemblyAssessment(assessmentid、spaceid、assemblyid、FacilityID)值(\“%@\”、\“%@\”、\“%@\”、\“%@\”)、self.finalAssessmentIdSt2、self.finalSpaceIdSt2、self.FinalFacilityIDst2];
NSLog(@“insertfSQL…%@”,insertfSQL);
常量字符*插入_fstmt=[insertfSQL UTF8String];
sqlite3_prepare_v2(ipadSites,insert_fstmt,-1和fstatement,NULL);
NSLog(@“评估”);
如果(sqlite3_步骤(fstatement)=SQLITE_完成)
{
NSLog(@“组装评估中的增值…”);
}
其他的
{
NSLog(@“插入失败:%s”,sqlite3_errmsg(ipadSites));
NSLog(@“未能在AssemblyAssessment中添加值…”);
} 
}
sqlite3_最终确定(财务报表);
sqlite3_关闭(ipadSites);
}
}

您是否在SQLite或任何其他浏览器中打开了数据库??若数据库是从外部打开的,则会出现相同的错误。检查一下。我也有同样的问题。

您是否在SQLite或任何其他浏览器中打开了数据库??若数据库是从外部打开的,则会出现相同的错误。检查一下。我也有同样的问题。

请!不要像那样在循环中打开/关闭SQLite连接! 从“FOR循环”外部打开数据库句柄。 请看这里和这里


对于基本CRUD(创建、读取、更新、删除),我建议您。。想看一看

请!不要像那样在循环中打开/关闭SQLite连接! 从“FOR循环”外部打开数据库句柄。 请看这里和这里

对于基本CRUD(创建、读取、更新、删除),我建议您。。看