无法更新android sqlite中的一行

时间:2014-01-12 09:29:24

标签: java android sqlite sql-update

我试图更新我的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的{​​{1}}的值来自班级pemegang_polis。我又得到了错误,这是我的logcat说:

Menu_SPPAJ.getX()

我不知道我的错在哪里,我觉得一切都很好,有什么我想念的或其他什么吗?我希望有人能理解我的问题,能帮助我解决问题,非常感谢你。

2 个答案:

答案 0 :(得分:1)

  

android.database.sqlite.SQLiteException:near“。01”:语法错误(代码1):,编译时: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_IDAndroidESPAJ2014.01.12.04.20.04.568看起来像字符串文字,但不像'string literal'那样引用。

但是,最好使用?文字占位符和绑定参数:

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

答案 1 :(得分:1)

update()的第三个参数用于保存where条件。

您的第一次尝试"SPAJ_ID=SPAJ_ID"对于所有行都适用,因为每一行都在每个列中都有一个匹配...本身的值。

如果您的条件包括针对给定值检查SPAJ_ID列,请使用:

“SPAJ_ID =” + yourVal

其中yourVal是您要用于过滤的ID。如果您的ID是String类型,请记住包含引号。

如果是String类型,请使用:

"SPAJ_ID='"+yourVal+"'"