在sqlite3上更新查询不起作用

时间:2011-12-26 07:03:04

标签: iphone objective-c database sqlite

更新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];

但是数据库没有更新。

1 个答案:

答案 0 :(得分:0)

检查sqlite3_step(..)的返回代码,也可能sqlite3_prepare_v2(..)。如果不是SQLITE_OKSQLITE_DONE,请打印sqlite3_errcode(_database)sqlite3_errmsg(_database)

这应该会为您提供一些信息。