Database is locked in Sqlite

后端 未结 3 872
臣服心动
臣服心动 2020-12-08 16:55

I am developing an iPhone app, when I insert data to the database I got \"Terminating app due to uncaught exception \'NSInternalInconsistencyException\', reason: \'Err

3条回答
  •  星月不相逢
    2020-12-08 17:55

    Search comment //ADD THIS LINE TO YOUR CODE in following modified method of yours.

    - (void) gettingData:(NSString *)dbPath {
        NSLog(@"Data base path is %@",dbPath);
        if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
        {
            const char *sql = "select * from Product";
            sqlite3_stmt *selectstmt;
            if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK)
            {
                while(sqlite3_step(selectstmt) == SQLITE_ROW)
                {
                    [membersInfoDict setValue:[NSString stringWithUTF8String:(char*)sqlite3_column_text(selectstmt, 0)] forKey:@"ProductName"];
                    [membersInfoDict setValue:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)] forKey:@"ProductBarcode"];
                    [membersInfoDict setValue:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 2)] forKey:@"ProductImage"];
                    [membersInfoDict setValue:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 3)] forKey:@"ProductIngredients"];
                    [membersInfoDict setValue:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 4)] forKey:@"ProductStatus"];
    
                    if(membersInfoDict)
                    {
                        [membersInfoArray addObject:membersInfoDict];
                        membersInfoDict = nil;
                        //  NSLog(@"Entered and return");
                        sqlite3_close(database);
                        return;
                    }
                }
            }
            //ADD THIS LINE TO YOUR CODE
            sqlite3_finalize(selectstmt);
        }        
        else
            sqlite3_close(database); //Even though the open call failed, close the database connection to release all the memory.
    }
    

提交回复
热议问题