1

複数の値が必要な配列である-(void)insertDataIntoAssemblyAssessmentメソッドを呼び出すと、「データベースはロックされています」というエラーが発生します。ただし、値が 1 つしかない場合、値はデータベースに正常に格納されます。finalAssembIdArrfinalAssembIdArr

どうすればこれを解決できますか?? 私を助けてください。

-(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);

    }
}
4

2 に答える 2

1

お願いします... !そのようなループで SQLite 接続を開いたり閉じたりしないでください。「FORループ」の外でデータベースへのハンドルを開きます。iPhone でデータベースにデータを挿入する方法と、iPhone の Sqlite3 に NSMutableArray 要素を挿入する方法を参照してください。

基本的な CRUD (作成、読み取り、更新、削除) については、 FMDBを参照することをお勧めします。

于 2012-11-20T09:41:02.103 に答える
0

SQLite または他のブラウザでデータベースを開きましたか?? 外部からデータベースを開くと、同じエラーが発生します。チェックしてください。私は同じ問題を抱えていました。

于 2012-11-20T07:35:16.937 に答える