Android SQLite更新项目与whereclause

时间:2012-09-27 11:48:25

标签: android database sqlite filtering

我需要一些关于如何在SQLite数据库中更新数据的建议。现在我这样做了:

public void insertadoMedidasAdoptarCorrectamente(String codMedAdC,
        String codigoServicio) {
    AndroidOpenDbHelper androidOpenDbHelper = new AndroidOpenDbHelper(this);
    SQLiteDatabase sqliteDatabase = androidOpenDbHelper
            .getWritableDatabase();

    ContentValues contentValues = new ContentValues();
    contentValues.put(AndroidOpenDbHelper.insertadoCorrectamente, 1);

    sqliteDatabase.update("MedidasAdoptarSeleccionadas", contentValues,
            "codigomedida = '" + codMedAdC + "' AND codigoservicio = '"
                    + codigoServicio + "'", null);

    sqliteDatabase.close();
}

我听说这不是更新数据的最佳方式。我认为有时它会出错。因为那段代码:

sqliteDatabase.update("MedidasAdoptarSeleccionadas", contentValues,
            "codigomedida = '" + codMedAdC + "' AND codigoservicio = '"
                    + codigoServicio + "'", null);

    sqliteDatabase.close();

您可以观察到我正在按两个字段过滤项目。我已经看到这可以用whereclause参数完成。

所以,我的问题是,这是过滤要更新的数据的最佳方法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

如果"codigomedida = '" + codMedAdC + "'中有',则不应该codMedAdC {/ 1}}。

但是这样做

String[] whereArgs = { codMedAdC, codigoServicio };
sqliteDatabase.update("MedidasAdoptarSeleccionadas", contentValues,
            "codigomedida = ? AND codigoservicio = ?", whereArgs);

很好。

如果定期执行这些更新,您可以考虑保持数据库处于打开状态。每次创建新的AndroidOpenDbHelper并打开数据库需要一些时间。