在Sqlite中更新表时出错

时间:2012-03-27 20:29:10

标签: java android sqlite

尝试更新我的某条记录的记录时,我正在使用此代码

    private void UpdateCattleRecord(UpdateCattleRecord updateRecord){
             mDB.beginTransaction();
             String where = "_ID=";
             String[] RecordToUpdate = {Cattle._ID};
             Toast.makeText(this,"Updating Animal "+ RecordToUpdate, Toast.LENGTH_LONG).show();
             try {
                    ContentValues CattleFieldsToUpdate = new ContentValues();
                    CattleFieldsToUpdate.put(Cattle.CATTLE_ANIMALID,updateRecord.getCattleName());
                    CattleFieldsToUpdate.put(Cattle.CATTLE_TYPE, updateRecord.getCattleType());
                    CattleFieldsToUpdate.put(Cattle.CATTLE_LOCATION, updateRecord.getCattleLocation());
                    CattleFieldsToUpdate.put(Cattle.CATTLE_DOB, updateRecord.getCattleDob());
                    CattleFieldsToUpdate.put(Cattle.CATTLE_DAM, updateRecord.getCattleDam());
                    CattleFieldsToUpdate.put(Cattle.CATTLE_SEX, updateRecord.getCattleSex());
                    mDB.update(Cattle.CATTLE_TABLE_NAME,CattleFieldsToUpdate, where, RecordToUpdate);
                    mDB.setTransactionSuccessful();
              } finally {
                 mDB.endTransaction();
             }
    }

我的日志显示

  

返回标签数据库sqlite:错误代码= 1,msg = near“=”:语法错误

经过研究,我认为我把所有东西都放在了正确的位置,但显然我没有, 当我查看日志中的下一个错误时,它当然是'红色',它显示了所有正确的数据,

  

03-27 15:15:29.291:E /数据库(12011):错误更新date_of_birth = 2012年3月27日animaltype =小牛性别= F位置=东方大坝= 601 animal_id = 601A使用UPDATE cattle SET date_of_birth = ?, animaltype =?,sex = ?, location = ?, dam = ?, animal_id =? WHERE _ID =

我显然对_ID的值有问题,但似乎无法找到它。有人可以指出我的语法错误在哪里吗?

更新

出现问题是因为我未能传递我想要更新的记录(_ID)的实际值。一旦我将其作为参数传递给我的updaterecords函数,更新就按计划进行。

感谢您的投入,它帮助我缩小了我的错误。

2 个答案:

答案 0 :(得分:0)

检查您的数据库创建,您可能有一个名为_id的列(尽管您在_ID引用它,其名称为_id)而不是_ID:< / p>

String where = "_id= ?"; // ? represent the value from the selection arguments String array

或更好:

String where = Cattle._ID + "= ?";

编辑: 在你选择的where选择参数中:

String[] RecordToUpdate = {Cattle._ID};

你可能想要从某个地方(你想要更新的记录,一个long号码)输入一些你现在正在做的ID:

WHERE _ID = _ID (or _id)

这将失败。

答案 1 :(得分:0)

尝试:

 mDB.update(Cattle.CATTLE_TABLE_NAME,CattleFieldsToUpdate, "_ID="+Cattle._ID, null);

尝试:

mDB.update(Cattle.CATTLE_TABLE_NAME,CattleFieldsToUpdate, "_ID="+updateRecord.getId(), null);