2014-01-12 70 views
0

我想在一個表中更新行對我的SQLite我第一次嘗試以如下更新:不能更新的android源碼行

public void updateMasterSPAJ(
      String nama_pp, 
      String gelar_pp, 
      String ibu_pp, 
      String hubungan_pp, 
      int spinner_hubungan_pp 
     ) { 
    ContentValues cv=new ContentValues(); 
     cv.put("nama_pp", nama_pp); 
     cv.put("gelar_pp", gelar_pp); 
     cv.put("ibu_pp", ibu_pp); 
     cv.put("hubungan_pp", hubungan_pp); 
     cv.put("spinner_hubungan_pp", spinner_hubungan_pp); 
    getWritableDatabase().update("pemegang_polis", cv, "SPAJ_ID=SPAJ_ID", null); 
} 

但是這個代碼將更新所有的行,而不是特定行,所以我改變我的代碼在這一行getWritableDatabase().update("pemegang_polis", cv, "SPAJ_ID=SPAJ_ID", null);

`getWritableDatabase().update("pemegang_polis", cv, "pemegang_polis.SPAJ_ID=master_spaj.SPAJ_ID", null);` 

我得到的錯誤,這是我的logcat說:

android.database.sqlite.SQLiteException: no such column: master_spaj.SPAJ_ID (code 1): , while compiling: UPDATE pemegang_polis SET spinner_hubungan_pp=?,ibu_pp=?,hubungan_pp=?,nama_pp=?,gelar_pp=? WHERE pemegang_polis.SPAJ_ID=master_spaj.SPAJ_ID 

然後我改變該行成:

a=Menu_SPPAJ.getX(); 
    getWritableDatabase().update("pemegang_polis", cv, "SPAJ_ID="+ a, null); 

因爲從pemegang_polisSPAJ_ID值從Menu_SPPAJ.getX()類得到。我再次遇到錯誤,這是我的logcat說:

android.database.sqlite.SQLiteException: near ".01": syntax error (code 1): , while compiling: UPDATE pemegang_polis SET spinner_hubungan_pp=?,ibu_pp=?,hubungan_pp=?,nama_pp=?,gelar_pp=? WHERE SPAJ_ID=AndroidESPAJ2014.01.12.04.20.04.568 

我不知道哪裏是我的錯,我覺得一切都很好,是沒有辦法,我錯過了什麼或者別的什麼嗎?我希望有人瞭解我的問題,可以幫助我解決我的問題,非常感謝。

回答

1

android.database.sqlite.SQLiteException:鄰近」 0.01" :語法錯誤(碼1):在編譯:UPDATE SET pemegang_polis spinner_hubungan_pp = ?, ibu_pp = ?, hubungan_pp = ?, nama_pp = ?, gelar_pp =? WHERE SPAJ_ID = AndroidESPAJ2014.01.12.04.20.04.568

SPAJ_IDAndroidESPAJ2014.01.12.04.20.04.568看起來像一個字符串文字,但沒有加引號像'string literal'

但是,最好使用?文本佔位符,綁定參數,而不是:

getWritableDatabase().update("pemegang_polis", cv, "SPAJ_ID=?", new String[] { a }); 
+0

你回答比我好。 +1爲您的準備陳述的答案。 – elbuild

+0

@laalto我試過你的代碼,並沒有更新過的行。 –

+0

@AoyamaNanami然後,你必須弄清楚你需要在數據庫中使用你的數據的情況。我們所能使用的只是您問題中提供的信息。 – laalto

1

更新的第三個參數()是指保存在那裏的條件。

您的第一次嘗試"SPAJ_ID=SPAJ_ID"對於所有行都是正確的,因爲每行在每列中都有一個與...本身匹配的值。

如果你的條件包括檢查針對給定值SPAJ_ID列只需使用:

「SPAJ_ID =」 + yourVal

其中yourVal是要使用過濾的ID。如果您的ID是字符串類型,請記住包含引號。

在一個字符串類型的情況下,只需使用:

"SPAJ_ID='"+yourVal+"'" 
+0

我已經嘗試了「SPAJ_ID =」+ a的方法,但是我得到了一個錯誤 –

+0

因爲您錯過了引號。 – elbuild

+0

我編輯了我的答案 – elbuild