2011-12-26 70 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 2011-12-26 07:09:01

+0

是的,我有行ID = 1但沒有錯誤消息和DataBasa沒有更新 – Ahmad 2011-12-26 08:25:36

+0

你的數據庫文件存儲在設備上? – marcus 2011-12-26 11:51:03

回答

0

檢查返回碼sqlite3_step(..),也可能是sqlite3_prepare_v2(..)。如果不是SQLITE_OKSQLITE_DONE,請打印出sqlite3_errcode(_database)sqlite3_errmsg(_database)

這應該給你一些信息繼續。

+0

所有的聲明是真實的 - 但數據庫沒有更新 – Ahmad 2011-12-26 08:26:15

+0

你是什麼意思的「真」? – ergosys 2011-12-26 21:37:11