2011-12-26 15 views
0

更新クエリは、他のクラスでは更新クエリは、sqlite3の上

-(void)updateAlarms:(AlarmsBean *)todoItem//TodoItem: (AlarmsBean*)todoItem 
{ 
    if (_updateAlarmsStatement == NULL) 
    { 
    sqlite3_prepare_v2(_database, 

    "UPDATE AlarmSetting SET Sound = ?, Sensitivity = ?, Label = ? , Repeat = ? , 
time = ? , On_Off = ? WHERE ID = ?", 
          -1, 
          &_updateAlarmsStatement, 
          NULL); 
    } 
    sqlite3_reset(_updateAlarmsStatement); 
    sqlite3_bind_text(_updateAlarmsStatement, 1, 
[todoItem.AlarmSoundName UTF8String], -1, SQLITE_TRANSIENT); 
    sqlite3_bind_int(_updateAlarmsStatement, 2, todoItem.AlarmSensitivity); 
    sqlite3_bind_text(_updateAlarmsStatement, 3, [todoItem.AlarmName UTF8String], -1, 
SQLITE_TRANSIENT); 

    sqlite3_bind_int(_updateAlarmsStatement, 4, todoItem.AlarmRepeat); 

    sqlite3_bind_text(_updateAlarmsStatement, 5, [todoItem.AlarmTime UTF8String], -1, 
SQLITE_TRANSIENT); 

    sqlite3_bind_int(_updateAlarmsStatement, 6, todoItem.AlarmOnOff); 
    sqlite3_bind_int(_updateAlarmsStatement, 7, todoItem.AlarmID); 
    sqlite3_step(_updateAlarmsStatement); 
} 

動作しない動作しません:

AlarmsBean * todoItem1 = [[AlarmsBean alloc] init]; 

database = [[ClassAlarmDB alloc] init]; 

      todoItem1.AlarmID = 1 ; 
      todoItem1.AlarmSoundName = @"28.png"; 
      todoItem1.AlarmSensitivity = 1 ; 
      todoItem1.AlarmName = @"ahmad" ; 
      todoItem1.AlarmRepeat = 1; 
      todoItem1.AlarmTime = @"00 : Am"; 
      todoItem1.AlarmOnOff = 4 ; 
       NSLog (@"Befor Update"); 
      [database updateAlarms: todoItem1]; 

しかし、データベースが更新されません。

+2

エラーメッセージは何ですか?あなたはすでに 'id == 1'という行をそのテーブルに持っていますか? – Mat

+0

はい行id = 1がありますが、エラーメッセージは表示されず、DataBasaは更新されません。 – Ahmad

+0

デバイスに保存されているデータベースファイルはどこですか? – marcus

答えて

0

戻りコードをsqlite3_step(..)から、おそらくはsqlite3_prepare_v2(..)から確認してください。 SQLITE_OKまたはSQLITE_DONEでない場合は、sqlite3_errcode(_database)sqlite3_errmsg(_database)を印刷してください。

この情報には次の情報が必要です。

+0

すべてのステートメントは真ですが、データベースは更新されていません – Ahmad

+0

「真」とはどういう意味ですか? – ergosys