2014-01-12 3 views
0

я пытался обновить строку в одной таблице на моем SQLITE первый раз я пытался обновить, как показано ниже:не может обновить строку в андроид SQLite

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); 

потому, что значение из SPAJ_ID из pemegang_polis получается из класса 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: возле».01" : ошибка синтаксиса (код 1):, в то время как компиляции: UPDATE SET pemegang_polis spinner_hubungan_pp = ?, ibu_pp = ?, hubungan_pp = ?, nama_pp = ?, gelar_pp =? ГДЕ SPAJ_ID = AndroidESPAJ2014.01.12.04.20.04.568

SPAJ_ID значение AndroidESPAJ2014.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 вы хотите использовать для фильтрации. Не забудьте включить кавычки, если ваш идентификатор имеет тип String.

В случае строкового типа просто использовать:

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

Я пробовал ваш метод с помощью «SPAJ_ID =» + a, но я получил ошибку –

+0

Потому что вы пропустили кавычки. – elbuild

+0

Я отредактировал свой ответ – elbuild

Смежные вопросы