마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이틀째 삽질하고있습니다 리스트뷰 DB연동 추가 삭제하기

0 추천
    //db칼럼
    MyDBHelper mHelper;
    SQLiteDatabase db;
    Cursor cursor;
    MyCursorAdapter myAdapter;
    
    final static String KEY_ID = "_id";
    final static String KEY_NAME = "name";
    final static String KEY_NUMBER = "number";
    final static String TABLE_NAME = "mytable";
 
    final static String querySelectAll = String.format( "SELECT * FROM %s", TABLE_NAME );
 
   //어댑터 추가
    ListView list = (ListView) findViewById( R.id.lv_list );
 
    mHelper = new MyDBHelper(this);
    db = mHelper.getWritableDatabase();
 
    cursor = db.rawQuery( querySelectAll, null );
        
        
    myAdapter = new MyCursorAdapter (this, cursor);
        
     list.setAdapter( myAdapter );
     list.setOnItemLongClickListener(onItemLongClickEvent);

 //dbhelper

class MyDBHelper extends SQLiteOpenHelper {
 
    public MyDBHelper(Context context) {
    super(context, "MyData.db", null, 2);
    }
 
    public void onCreate(SQLiteDatabase db) {
    // AUTOINCREMENT 속성 사용 시 PRIMARY KEY로 지정한다.
    String query = String.format("CREATE TABLE %s ("
    + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "%s TEXT, "
    + "%s TEXT );", TABLE_NAME, KEY_NAME, KEY_NUMBER);
    db.execSQL(query);
    }
 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String query = String.format("DROP TABLE IF EXISTS %s", TABLE_NAME);
    db.execSQL(query);
    onCreate(db);
    }
 
//롱클릭시 삭제
OnItemLongClickListener onItemLongClickEvent = new OnItemLongClickListener() {
 
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
 
 
// TODO Auto-generated method stub
Builder builder = new AlertDialog.Builder(Receiver.this);
      builder.setMessage("삭제 하시겠습니까?");
      builder.setPositiveButton("취소", new DialogInterface.OnClickListener() {
       public void onClick(DialogInterface dialog, int which) {    
        dialog.cancel();
       }
      });
      builder.setNegativeButton("확인", new DialogInterface.OnClickListener() {
       public void onClick(DialogInterface dialog, int which) {
      SQLiteDatabase db=null;
if(db==null){
db=openOrCreateDatabase("MyData.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
}
 
 
String query="DELETE FROM mytable WHERE _id= " + KEY_ID;
db.execSQL(query);  -->이 부분 쿼리 수정좀 부탁드리겠습니다.
 
cursor = db.rawQuery( querySelectAll, null );
           myAdapter.changeCursor( cursor );
 
if(db != null){
db.close();
}
       }
      });
      builder.show();
     
return false;
}
   
    };

추가는 잘되는데 삭제가 안되네요... 삭제방법좀 부탁드리겠습니다.(커서랑 몇몇부분은 뺐습니다.글자제한때문에 ㅠ)

공부하고싶습니다 (270 포인트) 님이 2015년 7월 10일 질문

1개의 답변

+1 추천
 
채택된 답변
DELETE FROM mytable WHERE _id = id

그리고 위에 onItemLongClick 파라미터중에 long id 를 final long id 로 바꾸고요
Gradler (109,780 포인트) 님이 2015년 7월 10일 답변
공부하고싶습니다님이 2015년 7월 10일 채택됨
이렇게 실행을하면 앱이 중지되버리네요 ㅠㅠ

-- "DELETE FROM mytable WHERE _id = "+id

이렇게 하니까 되네요!!! 감사합니다!!!!
...