【问题标题】:How to commit in SQLite Android?如何在 SQLite Android 中提交?
【发布时间】:2019-06-18 04:25:30
【问题描述】:

我想在我的应用程序中更新我的 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();
    }
}

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

【问题讨论】:

  • 但不起作用。这到底是什么意思?
  • 我想更新表格,但是表格没有更新...简单!
  • easy!... 您必须尽可能准确地描述您的问题/错误...理解“不工作”并不是那么“容易”技术方式...
  • 这是更新某些表的正常方法,但在这种情况下(可能)更新查询未提交

标签: android database sql-update android-sqlite commit


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 2013-12-01
    • 2012-05-10
    • 1970-01-01
    • 2012-03-28
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多