Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite UPDATE语句更新表中的所有行_Android_Sqlite - Fatal编程技术网

Android SQLite UPDATE语句更新表中的所有行

Android SQLite UPDATE语句更新表中的所有行,android,sqlite,Android,Sqlite,向表中添加新行时,我会检查该行是否已存在,如果已存在,则更新该行,否则会创建新行。当我的表中只有一行时,这很好用。但是,当我添加另一行并执行相同的操作时,表中的所有行都会更新 我正在处理这些测试数据: 测试1 debtorName: Ann Droid totalOwed = 200 这就是结果: 当我使用相同的测试数据再次运行应用程序时,我得到了这个结果(如预期的那样) 测试2 debtorName: Vera Brown totalOwed: 700 我得到了预期的结果,第一行没有任

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

我正在处理这些测试数据:

测试1

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命令的绑定参数。谢谢大家。我终于解决了。