2016-08-23 7 views
0

私のアプリケーションでは、ユーザーが複数の行に影響を与える情報を変更できます。ユーザーはこれらのうちいくつかを変更できますが、ユーザーが保存を選択した場合(変更を破棄することができる場合)、データベースに変更を適用したいだけです。 私はこれにいくつか問題があります。Android:Sqliteは、ユーザーが保存した後にデータベースに挿入する

今、私はvalues.putを使用して、db.insertをsave onClickListenerで呼び出しようとしていますが、ユーザーが複数の行を変更した場合、これはユーザーが最後に行った変更のみを反映します。 (行は名前、日付、spinnerGeneral、spinnerSprint、timeSprint、spinnerRest、timeRestで構成されています)これをどうすれば処理できますか?値の配列は、それぞれの1つの挿入を呼び出しますか?

これは私もちょうどユーザが最初の行を変更したときdb.insert()を呼び出し、そして配列にROW_IDの保存についてROWID []、およびユーザ場合考え今

values.put("name", workoutName); 
values.put("date",datewo); 
values.put("spinnerGeneral", data.get(1).getSpinnerGeneral()); 
values.put("spinnerSprint", data.get(1).getSpinnerSprint()); 
values.put("timeSprint", data.get(1).getTimeSprint()); 
values.put("spinnerRest", data.get(1).getSpinnerRest()); 
values.put("timeRest", data.get(1).getTimeRest()); 


[....] 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    saveData=true; 
    int id = item.getItemId(); 

if (id == R.id.action_save){ 
    long rowId = db.insert("workout",null,values); 
    onBackPressed(); 
} 

私のコードであります変更を破棄することを決定し、私が持っているrow_IDですべての行を削除するだけです。これは可能ですか?それはちょうどDELETE * FROMワークアウトを使用していますか?Row_ID = rowID [1 ...]? Row_IDは自動的に生成される列の名前ですか?

は手始めに非常に

答えて

1

をありがとうもちろん、あなたが自転車のスピニングといえばない限り、私は、DBのカラム名のうち、スピナー名を残して、現実のオブジェクトではなく、UIコンポーネントの後に私のデータベースをモデル化したいですいい結果になる。

ユーザーがデータを破棄するとデータを追加してから削除することをお勧めします。それは不必要な複雑さを加える。ところで

private void collectUIValues() { 
    values.clear(); 
    values.put("name", workoutName); 
    values.put("date",datewo); 
    values.put("spinnerGeneral", data.get(1).getSpinnerGeneral()); 
    values.put("spinnerSprint", data.get(1).getSpinnerSprint()); 
    values.put("timeSprint", data.get(1).getTimeSprint()); 
    values.put("spinnerRest", data.get(1).getSpinnerRest()); 
    values.put("timeRest", data.get(1).getTimeRest()); 
} 

if (id == R.id.action_save){ 
    collectUIValues();   
    long rowId = db.insert("workout",null,values); 

    onBackPressed(); 
} 

、私は常にデータベースにアクセスするときORMを使用しよう:あなたが供給なけなしのコードを離れて働い

は、私は解決策は、このようなものになるだろうと思うだろう。もう少しオーバーヘッドがありますが、コードをきれいにしてエラーを起こしにくくしています。

関連する問題