У меня проблема в моем приложении Iphone. Некоторое время мое приложение успешно запускается, но в некоторых случаях оно дает «databse заблокированное исключение», поэтому я не могу читать или вставлять данные из базы данных sqlite. Пожалуйста, предложите мне, если у кого-нибудь есть какое-то решение. Это мой код вставки данных в databse Спасибо.Sqlite Заблокирована база данных при вставке данных
-(void)insertDataIntoDatabase
{
NSLog(@"insertDataIntoDatabase-----1");
@try{
tUserName=userNameTf.text;
tLevel=[NSString stringWithFormat:@"%d",level];
tMoves=[NSString stringWithFormat:@"%d",moves];
NSLog(@"tLevel;;;%@",tLevel);
// NSString *tdatabaseName = @"FlipScoreBord.sqlite";
sqlite3_stmt *addStatement;
// NSArray *tdocumentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// NSString *tdocumentsDir = [tdocumentPaths objectAtIndex:0];
// NSString *tdatabasePath = [tdocumentsDir stringByAppendingPathComponent:tdatabaseName];
NSString *insertQuery = [NSString stringWithFormat:@"INSERT INTO Moves (User_Name,User_Label,User_Moves) VALUES('%@','%@','%@')",tUserName,tLevel,tMoves];
const char *sql = [insertQuery cStringUsingEncoding:NSUTF8StringEncoding];
if(sqlite3_prepare_v2(tdatabase, sql, -1, &addStatement, NULL) != SQLITE_OK)
{
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(tdatabase));
}
sqlite3_bind_text(addStatement, 0, [tUserName UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStatement, 1, [tLevel UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStatement, 2, [tUserName UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStatement))
{
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(tdatabase));
sqlite3_reset(addStatement);
}
sqlite3_close(tdatabase);
}
@catch (NSException *r)
{
NSLog(@"Exception---- %@",r);
}
NSLog(@"insertDataIntoDatabase-----2");
}
Это многопоточное приложение? Это может вызвать проблемы с блокировкой. – Rob
Нет. Это не многопрофильное приложение. – Suraj