私は1つのアプリケーションを開発中です。データベースにデータを挿入する際の問題に直面しています。最初の挿入と更新は非常にうまく実行されます。私は挿入操作を実行したい場合、更新後、アプリはクラッシュします。私のコードの挿入と更新は次のようなものでしたデータの挿入と更新が完了した後にデータを挿入する方法
+(BOOL)update:(CalendarInfo*)clInfo
{
NSString *query = [NSString stringWithFormat:@"UPDATE ABC set A = '%@' where B =%d and C=%d",clInfo.a,clInfo.b,clInfo.c];
sqlite3_stmt *stStatement;
if(sqlite3_prepare_v2(database, [query UTF8String], -1, &stStatement, nil)==SQLITE_OK)
{
if(SQLITE_DONE == sqlite3_step(stStatement))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
NSLog(@"updation Successful");
}
return 0;
}
+(BOOL)insert:(CalendarInfo*)clInfo{
sqlite3_stmt *addStmt = nil;
sqlite3 *contactDB;
NSArray *docPathArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *destPath = [NSString stringWithFormat:@"%@/example.sqlite",[docPathArr objectAtIndex:0]];
if (sqlite3_open([destPath UTF8String], &contactDB)==SQLITE_OK) {
NSString *query2 = [NSString stringWithFormat:@"INSERT INTO ABC(C,B,A) VALUES(%d,%d,'%@')",clInfo.c,clInfo.b, clInfo.a];
if(sqlite3_prepare_v2(database, [query2 UTF8String], -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
}
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
NSLog(@"Insertion Successful");
sqlite3_reset(addStmt);
return 0;
}
私の問題を解決する方法を教えてください。
どのコード行が実際にクラッシュしていますか? –
if(SQLITE_DONE!= sqlite3_step(addStmt)) NSAssert1(0、@ "データの挿入中にエラー '%s'"、sqlite3_errmsg(database)); このループでは、2番目の行がクラッシュすると、 – user1138045
がクラッシュします。コンソールにエラーがありますか? 'sqlite3_step'または' sqlite3_errmsg'(これは私の最後のコメントの「2行目だと思います)」でクラッシュしますか? –