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

DB 삭제하는 부분 질문입니다

0 추천
리스트 뷰에 데이터 베이스에 저장된 항목들이 나오게 되고

버튼을 클릭 하면 해당 데이터 베이스 부분이 삭제되는 부분이 에러가 납니다

public class ListView extends ListActivity implements View.OnClickListener {

private TextView view;

String pos;
int pos1;
@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

DBHandler dbhandler=DBHandler.open(this);
Cursor cursor=dbhandler.selectAll();
startManagingCursor(cursor);

SimpleCursorAdapter cursorAdapter=new SimpleCursorAdapter(this,R.layout.list,cursor,new String[]{"car_name"},new int[]{R.id.text1});
setListAdapter(cursorAdapter);
((Button)findViewById(R.id.Delete)).setOnClickListener(this);

}

@Override
protected void onListItemClick(android.widget.ListView l, View v,
int position, long id) {
// TODO Auto-generated method stub

super.onListItemClick(l, v, position, id);
pos=String.valueOf(id);
pos1=Integer.parseInt(pos);

}

@Override
public void onClick(View v) {
DBHandler dbhandler= DBHandler.open(this);
// TODO Auto-generated method stub

if(v.getId() == R.id.Delete ) //리스트 뷰에 있는 삭제 버튼을 클릭 하게 되면 해당 데이터베이스가 삭제가 됩니다
{

Cursor cursor= dbhandler.delete(pos1);
cursor.close();

}
dbhandler.close();
}

}

//밑에 코드는 DBHandler 에 있는삭제 부분을 수행 하는 코드입니다

public Cursor delete(int pos1)throws SQLException{
Cursor cursor= db.rawQuery("delete from cars where _id="+pos1+"",null);

if(cursor !=null ){cursor.moveToFirst();}
return cursor;
}

이렇게 했는데 널 포인터 에러가 뜹니다 무엇이 문제이죠?
김니이 (420 포인트) 님이 2013년 6월 11일 질문

1개의 답변

0 추천

에러 로그를 올려 주셔야 조금 더 정확한 에러사항은 알 수 있을 듯 싶구요

 

짐작되는바로는 

 

Cursor cursor= db.rawQuery("delete from cars where _id="+pos1+"",null);


위 코드에서 굵게 표시한 db를 초기화하지 않고 사용하려고 하신건 아닌가 싶네요

그리고 onCreate부분에에 dbHandler를 한번 open 하신것 같은데 

삭제 버튼을 누를때 굳이 다시 open 하실 필요는 없어 보이네요

Gradler (109,780 포인트) 님이 2013년 6월 11일 답변
...