2011-08-04 17 views
0

私のsqliteデータベースで9つのオブジェクトを置き換えたいのですが、最後の列は2回表示されます。私の9つのオブジェクトだけが転送され、別のものは転送されないということを私は何をしなければならないのですか?最後のcolumeはsqliteデータベースで2回表示されます

for (NSInteger i = 0; i <9; i++) { 
    NSString * checkNSString = [checklistLevel objectAtIndex:i]; 

    NSString * SkillLevelNSString = [SkillLevel objectAtIndex:i]; 

    sqlite3 *database; 
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 



     char *errorMsg; 
     char *replace = "REPLACE Into SkillLevel4 (rowid, CheckboxSkillLevel4, SkillLevel4) Values (?,?,?);"; 

     sqlite3_stmt *stmt; 
     if (sqlite3_prepare_v2(database, replace , -1, &stmt, nil) 
      == SQLITE_OK) { 
      sqlite3_bind_int(stmt, 1, i); 
      sqlite3_bind_text(stmt, 2, [checkNSString UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(stmt, 3, [SkillLevelNSString UTF8String], -1, SQLITE_TRANSIENT); 

      if (sqlite3_step(stmt) != SQLITE_DONE) 
       NSAssert1(0, @"Error updating table: %s", errorMsg); 
      sqlite3_finalize(stmt); 
     } 
     } 
     sqlite3_close(database); 


} 

データベース:

"0" "1" "demonstrate 4 types of mounts" 
    "1" "1" "ride backward for 10 meters" 
    "2" "0" "ride one footed for 10 meters" 
    "3" "0" "idle with left foot down 25 times" 
    "4" "0" "idle with right foot down 25 times" 
    "5" "1" "ride with seat out in front for 10 meters" 
    "6" "1" "ride with the seat out in back for 10 meters" 
    "7" "1" "make a 360 degree turn to the left inside a 1 meter circle" 
    "8" "0" "make a 360 degree turn to the right inside a 1 meter circle " 
    "9" "0" "make a 360 degree turn to the right inside a 1 meter circle " <-twice 

答えて

0

それが表に存在していなかったので、追加の任意の行ましたか? SQLite "INSERT OR REPLACE INTO" vs. "UPDATE ... WHERE"

また、あなたはこのようなあなたのコードを修正する必要があります。okie場合okie場合はデータベース

    1. オープンし、準備されたステートメントにループ、バインド値を開始し、声明
    2. を準備します。 sqlite3_reset()すべての反復の最後に文
    3. ループを終了し、ステートメントを終了し、データベースを閉じます。
  • +0

    ありがとうございました:) – Lumus

    +0

    あなたがそうすることができるときに私の答えを投票してください:) –

    関連する問題