簡體   English   中英

在Sqlite中更新表時出錯

[英]Error on Updating Table in 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,味精=靠近“ =“:語法錯誤

經過研究之后,我認為我將所有內容放在正確的位置,但是顯然我沒有,當我查看日志中的下一個錯誤時,它當然是“紅色”,並且向我顯示了所有正確的數據,

03-27 15:15:29.291:E / Database(12011):更新date_of_birth = 2012年3月27日時發生錯誤animaltype =小牛性別= F location = Eastn dam = 601 animal_id = 601A使用UPDATE cow SET date_of_birth = ?, animaltype =? ,sex = ?、 location = ?、 dam = ?、 animal_id =? _ID =

我顯然對_ID的值有問題,但似乎找不到它。 有人可以指出我的語法錯誤在哪里嗎?

更新資料

發生問題是因為我無法傳遞我想要更新的記錄(_ID)的實際值。 一旦將其作為參數傳遞給我的updaterecords函數,更新就會如期進行。

感謝您的輸入,它幫助我縮小了我做錯的事情。

檢查您的數據庫創建,您可能有一個名為_id的列(盡管您通過_ID來引用它,其名稱是_id )而不是_ID

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

或更好:

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

編輯:在您的where選擇參數中:

String[] RecordToUpdate = {Cattle._ID};

您可能想要在其中添加從某處獲得的一些ID(要更新的記錄,很long數字),現在您正在執行以下操作:

WHERE _ID = _ID (or _id)

這將失敗。

嘗試:

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

嘗試:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM