SQLite UPDATE语句更新表

时间:2015-06-09 07:54:35

标签: android sqlite

在我的表中添加新行时,我会检查该行是否已经存在,如果存在,我会更新该行,否则会创建一个新行。当我的表中只有一行时,这很好用。但是当我添加另一行并执行相同的操作时,表中的所有行都会更新。

使用这些测试数据:

测试1

debtorName: Ann Droid
totalOwed = 200

这就是结果:

enter image description here

当我使用相同的测试数据再次运行应用程序时,我得到了这个结果(如预期的那样) enter image description here

测试2

debtorName: Vera Brown
totalOwed: 700

我得到了预期的结果,第一行没有任何变化: enter image description here

但是当我尝试更新时,使用此测试数据(或任何其他)为第二行添加新记录

debtorName: Vera Brown
amountOwed: 200

这种情况发生了:

enter image description here

我一直试图在过去的24小时内解决这个问题而没有运气。 这是更新代码:

public boolean updateRecord(String id,  int newTotalDebt, double newTotalOwed) {

    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();

    int newTotalDebts = newTotalDebt + getDebtor(id).getTotalDebts();
    double newTotalMoneyOwed = newTotalOwed + getDebtor(id).getTotalAmountOwed();


    contentValues.put(TOTAL_DEBTS, newTotalDebts);
    contentValues.put(TOTAL_OWED, newTotalMoneyOwed);

    return db.update(DEBTOR_TABLE_NAME, contentValues, id, null) > 0;
    //db.close();


}

欢迎任何帮助。

2 个答案:

答案 0 :(得分:1)

最后通过将我的更新代码更改为:

来解决它
public boolean updateRecord(String id,  int newTotalDebt, double newTotalOwed) {

    String filter = DEBTOR_ID +"= '" +id +"'";
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();

    int newTotalDebts = newTotalDebt + getDebtor(id).getTotalDebts();
    double newTotalMoneyOwed = newTotalOwed + getDebtor(id).getTotalAmountOwed();


    contentValues.put(TOTAL_DEBTS, newTotalDebts);
    contentValues.put(TOTAL_OWED, newTotalMoneyOwed);

    return db.update(DEBTOR_TABLE_NAME, contentValues, filter, null) > 0;
    //db.close();


}

答案 1 :(得分:-1)

在你的DebtDatabaseHandler类函数中

“public boolean updateRecord(String id,int newTotalDebt,double newTotalOwed)”表明此函数需要三个参数,一个是id,它将是主键,因此您必须提供要更新的行的id。