2012-02-26 8 views
-2

SQLテーブルから特定の行を削除するにはどうすればよいですか? 私はリストビューをSQLテーブルから移入しました。例えば。テーブルに5つのレコードがあり、リストビューにもあります。リストビューの3番目の項目をクリックすると、SQLテーブルから3番目のレコードを削除します。行IDは行番号とは異なるので、もちろん疑問から外れます。このためのSQL構文は何ですか?sqlから特定の行を削除する(sqliteでAndroidを使用)

これは私の移入クエリです:

public Cursor getAllTitles() { 
     String[] columns = new String[]{KEY_ROWID, KEY_NAME, KEY_HOTNESS}; 
     return ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);} 

と私の削除クエリ:

public void deleteEntry(int lRow1) { 
     ourDatabase.delete(DATABASE_TABLE, KEY_ROWID + "=" + lRow1, null);} 

これは私がArrayListのにカーソルを置く方法です:

Cursor c = info.getAllTitles(); 
      if (c.moveToFirst()) 
      { 
      do{ 
       todoItems.add(c.getString(0) + " " + c.getString(1) + " " + c.getString(2)); 
      }while (c.moveToNext()); 
      } 

textView1です私のリストビューレイアウトのTextViewのid。

holder.textView.setOnClickListener(新View.OnClickListener(){

 @Override 
     public void onClick(View v) { 
      TextView tv = (TextView) v ; 
      String text_of_clicked_textview = tv.getText().toString(); 
      selected_row_num = (Integer)v.getTag(); 
      Log.i("TAG", "" + text_of_clicked_textview + selected_row_num); 
     } 
    }); 

私はListViewコントロールの3番目の項目をクリックすると、私はログインしてlogcatにITEM2を得る:そして、これは私のsetOnClickListenerです。私getAllTitlesで。

私は(当分の間)にもKEY_ROWIDを取得する()クエリが、これは私がクリックされた項目の行番号が必要、のTextViewのテキストにすることはできませんので、。

すべて私は3番目を削除するdeleteEntryクエリを変更する必要がありますアイテム。

答えて

2

あなたのtableViewを満たしているとき、あなたはビューでこのフィールドのIDを格納することができます(つまり、view.setTag(new Integer(cursor.getInt(FIELD_ID)));

あなたは私のデータベースを照会するためにカーソルを使用int id = ((Integer)view.getTag()).intValue();

1

EDIT:タグについて完全に忘れました。ビュー・タグを使用して、実際のレコードIDを各ビュー・アイテムに格納します(各アイテムは実際にビューであるため)。

次に、各アイテムのそのプロパティにアクセスして、削除メソッドを実行できます。

その後、単純な単純SQLです。 DELETE FROM Table WHERE Table.recordId = %d

+0

とIDにアクセスすることができます。アイテムはarraylistに格納され、arraylistはlistviewのアダプタに設定されます。だから、私は自分のlvをレコードセットに直接バインドしませんでした。 – erdomester

関連する問題