在Android中插入或更新

时间:2016-05-03 05:10:59

标签: android database sqlite

我有类似的方法

private void addDataToDailyStatisticsIncome(String date, String money, int idUser){
    Cursor res1 = db.getDataTableDailyStatistic(idUser);
    int temp = 0;
    int money1, money2;

    res1.moveToFirst();
    while (res1.moveToNext()) {
        if (date.equals(res1.getString(1)) == true) {
            temp = 1;
            break;
        } else {
            temp = 0;
        }
    }

    if(temp == 1){
        money1 = Integer.parseInt(res1.getString(3));
        money2 = Integer.parseInt(money);

        money1 = money1 + money2;

        long isUpdated = db.updateTableDailyStatistic(res1.getString(1), Integer.toString(money1), idUser, Integer.parseInt(res1.getString(0)));

    } else{
        long isInserted = db.insertTableDailyStatistic(date, money, idUser);
    }
}

我想检查新数据何时插入应用。如果“date”可用,我将在同一日期更新“money”。 或者,如果“date”不可用,我将使用Date插入新的Money

但我有一个问题,它总是插入,它永远不会更新,虽然我在Date中有相同的Database。 你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

请按照以下步骤操作:

  1. 检查date是否可用并获取money1

    int money1 = 0;
    boolean isAvailable = false;
    String query = "select count(*) from TableName where date = ?";
    Cursor cursor = db.rawQuery(query, new String[] {date});
    if (cursor != null && cursor.moveToFirst()) {
        isAvailable = true;
        money1 = cursor.getInt(money1_column);
        cursor.close();
    }
    
  2. 插入或更新行:

    if (isAvailable) {
        // update
    } else {
       // insert
    }
    

答案 1 :(得分:0)

您可以通过将日期声明为主键来完成此操作。在上面的方法中写入sql查询(插入和更新)。