2011-12-26 61 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