第一次尝试更新时,我尝试更新 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);
因为来自 pemegang_polis
的 SPAJ_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
我不知道我的错在哪里,我认为一切都很好,有什么我想念的还是其他的吗?我希望有人理解我的问题,可以帮助我解决我的问题,非常感谢。
最佳答案
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
SPAJ_ID
值AndroidESPAJ2014.01.12.04.20.04.568
看起来像一个字符串文字,但不像'字符串文字'
那样被引用。
但是,最好使用 ?
文字占位符并绑定(bind)参数:
getWritableDatabase().update("pemegang_polis", cv, "SPAJ_ID=?", new String[] { a });
关于java - 无法更新 android sqlite 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21073138/