Android SQLite UPDATE语句更新表中的所有行
向表中添加新行时,我会检查该行是否已存在,如果已存在,则更新该行,否则会创建新行。当我的表中只有一行时,这很好用。但是,当我添加另一行并执行相同的操作时,表中的所有行都会更新 我正在处理这些测试数据: 测试1Android SQLite UPDATE语句更新表中的所有行,android,sqlite,Android,Sqlite,向表中添加新行时,我会检查该行是否已存在,如果已存在,则更新该行,否则会创建新行。当我的表中只有一行时,这很好用。但是,当我添加另一行并执行相同的操作时,表中的所有行都会更新 我正在处理这些测试数据: 测试1 debtorName: Ann Droid totalOwed = 200 这就是结果: 当我使用相同的测试数据再次运行应用程序时,我得到了这个结果(如预期的那样) 测试2 debtorName: Vera Brown totalOwed: 700 我得到了预期的结果,第一行没有任
debtorName: Ann Droid
totalOwed = 200
这就是结果:
当我使用相同的测试数据再次运行应用程序时,我得到了这个结果(如预期的那样)
测试2
debtorName: Vera Brown
totalOwed: 700
我得到了预期的结果,第一行没有任何变化:
但是,当我尝试更新时,请使用此测试数据(或任何其他数据)为第二行添加新记录
发生这种情况:
在过去的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();
}
欢迎提供任何帮助。在您的DebtDatabaseHandler类函数中
“public boolean updateRecord(String id,int newtotalebt,double newTotalOwed)”显示此函数需要三个参数,一个是id,它将是主键,因此您必须提供要更新的行的id。在您的DebtDatabaseHandler类函数中
“public boolean updateRecord(String id,int newtotalebt,double newTotalOwed)”显示此函数需要三个参数,一个是id,它将是主键,因此您必须提供要更新的行的id。通过将我的更新代码更改为以下内容,最终解决了此问题:
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();
}
通过将我的更新代码更改为以下内容,最终解决了此问题:
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();
}
您可以发布insert代码吗?我想您只是简单地添加了WHERE子句,忘记了指定要更新的记录。因此,所有记录都会收到更新。非常常见的错误…在插入新记录或更新现有记录时,在何处添加此
Where
子句?在SQL命令中:updatemytable SET。。。其中name='anndroid'
。在这种情况下,只有Ann Droid将收到更新。请随意使用SQL命令的绑定参数。谢谢大家。我终于解决了这个问题。你能发布插入代码吗?我猜你只是简单地添加了WHERE子句,忘记了指定要更新的记录。因此,所有记录都会收到更新。非常常见的错误…在插入新记录或更新现有记录时,在何处添加此Where
子句?在SQL命令中:updatemytable SET。。。其中name='anndroid'
。在这种情况下,只有Ann Droid将收到更新。请随意使用SQL命令的绑定参数。谢谢大家。我终于解决了这个问题。你能发布插入代码吗?我猜你只是简单地添加了WHERE子句,忘记了指定要更新的记录。因此,所有记录都会收到更新。非常常见的错误…在插入新记录或更新现有记录时,在何处添加此Where
子句?在SQL命令中:updatemytable SET。。。其中name='anndroid'
。在这种情况下,只有Ann Droid将收到更新。请随意使用SQL命令的绑定参数。谢谢大家。我终于解决了。