在我的表中添加新行时,我会检查该行是否已经存在,如果存在,我会更新该行,否则会创建一个新行。当我的表中只有一行时,这很好用。但是当我添加另一行并执行相同的操作时,表中的所有行都会更新。
使用这些测试数据:
测试1
debtorName: Ann Droid
totalOwed = 200
这就是结果:
当我使用相同的测试数据再次运行应用程序时,我得到了这个结果(如预期的那样)
测试2
debtorName: Vera Brown
totalOwed: 700
我得到了预期的结果,第一行没有任何变化:
但是当我尝试更新时,使用此测试数据(或任何其他)为第二行添加新记录
debtorName: Vera Brown
amountOwed: 200
这种情况发生了:
我一直试图在过去的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();
}
欢迎任何帮助。
答案 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)
“public boolean updateRecord(String id,int newTotalDebt,double newTotalOwed)”表明此函数需要三个参数,一个是id,它将是主键,因此您必须提供要更新的行的id。