首页 > 解决方案 > 如何在 SQLite Android 中提交?

问题描述

我想在我的应用程序中更新我的 sqlite 表,但它不起作用。这是我的代码:

public boolean updateTable(Employee emp) {
    String idEmp = emp.getId();
    SQLiteDatabase db = this.getWritableDatabase();
    db.beginTransaction();
    try {
        ContentValues contentValues = new ContentValues();
        contentValues.put(Employee.COLUMN_ADDRESS,emp.getAddress());
        contentValues.put(Employee.COLUMN_CODE_CITY,emp.getCodeCity());
        contentValues.put(Employee.COLUMN_COMPANY_CODE,emp.getCompanyCode());
        long result = db.update(Employee.TABLE_NAME, contentValues, "ID = ?",new String[] {idEmp});
        if (result == -1) {
            return false;
        } else {
            db.setTransactionSuccessful();
            return true;
        }
    } finally {
        db.endTransaction();
    }
}

你知道如何解决这个问题吗?

标签: androiddatabasesql-updateandroid-sqlitecommit

解决方案


您的代码似乎很好,除了一些可能令人困惑的问题。

也就是说,更新永远不会返回 -1,它将返回 0(没有更新)或正数(更新的行数)。因此,永远不会返回 false。

另一个问题是您正在捕获任何异常并且什么都不做。并可能隐藏有用的信息。

但是,我建议您的问题是您的更新实际上并未更新(没有匹配的 id),而是返回 true 而不是 false,因此不是提交失败,而只是没有进行更新。

更改if (result == -1) {if (result == 0) {将返回更具指示性的结果。


推荐阅读