2016-05-03 11 views
2

に私は新しいデータがアプリに挿入したときに確認したいこと挿入または更新は、Android

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は」利用できない場合、私はMoneyで新しいDateを挿入します。

しかし、私はそれが常に挿入する1つの問題がありますが、私は同じDateDatabaseを持っていますが更新されません。 この問題を解決するお手伝いをしてもらえますか?

+0

'daからte'と 'res1.getString(1)'の変数は? –

+0

使用デバッガおよび(date.equals(res1.getString(1))== true)の場合、この条件 – Pavya

+0

res1.getStringをチェックは、(1)私のデータベースのタイプです。そして、日付はEditTextのTextです。 –

答えて

0

あなたは主キーとして日付を宣言することによってそれを行うことができます。上記の方法で両方のSQLクエリ(挿入と更新)を記述します。

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 
    } 
    
関連する問題