2011-11-03 4 views
0

これは非常に混乱しています...私の "DiscoveredCars"テーブルは2つのレコードから始まります。私がこのメソッドを最初に呼び出すと、それは正しく挿入され、最後の行はレコード数に "3"を表示します。私のSQLite3挿入メソッドで何が問題になりますか?

まだ2回目に、SQLは完璧に見えますが、何らかの理由でまだ「3」のサイズが表示されており、正しく挿入されていないようです。何か案は?

- (void)writeToDiscoveredCars: (Car *)car { 

NSString *tempSQL = [NSString stringWithFormat:@"INSERT INTO DiscoveredCars (car_ID) VALUES (%i)", car.ID]; 

NSLog(@"size of discoveredis %i", [self numberRecordsForTable:@"DiscoveredRecipes"]); 
NSLog(@"SQL insert is %@", tempSQL); 

const char *sql = [tempSQL UTF8String]; 
sqlite3_stmt *statement; 

int sqlResult = sqlite3_prepare_v2(myDatabase, sql, -1, &statement, NULL); 

if (sqlResult == SQLITE_OK) { 

    sqlResult = sqlite3_step(statement); 

    if(sqlResult == SQLITE_DONE) 
    { 

    } 

    sqlite3_finalize(statement); 
} 

else 
{ 
    NSLog(@"1. problem with database"); 
    NSLog(@"%s", sqlite3_errmsg(myDatabase)); 
} 

NSLog(@"size of discoveredis %i", [self numberRecordsForTable:@"DiscoveredCars"]); 

}

答えて

2

あなたはsqlite3_stepを呼び出すことで、クエリを実行することはありません。

int sqlResult = sqlite3_prepare_v2(myDatabase, sql, -1, &statement, NULL); 

if (sqlResult == SQLITE_OK) { 
    sqlResult = sqlite3_step(statement); //Execute! 
    //check the result for completion 
    if(sqlResult == SQLITE_DONE) 
    { 
    } 

    sqlite3_finalize(statement); 
} 
+0

おっと!あなたは正しい...私はそこにそれを持っていて、それからトラブルシューティングをしようとすると偶然それを編集しました。私は私のポストのコードを更新しました。しかし、私はまだ私が説明した問題を抱えています。私は方法の始めと終わりにDiscoveredCarsのサイズを確認することを知っています。最初は2と書いてあり、3と書いてあります。2回目に電話するともう2と3と言われますか?毎回データベースが再作成されていますか? – sayguh

+0

もう一度おしまい...私はそれを再初期化していた場所を見つけました。ありがとうジョー – sayguh

関連する問題