DB에 저장하는데요
ListView 의 목록 중 체크가 3개가 되어 있다가 이중에 하나를 체크 해지 합니다.
그럼 해지 된 목록은 DB에서 삭제 하고 싶습니다.
다음은 제가 작성한 코드 입니다.
빨간 부분에서 에러가 발생하는데.. 무엇이 잘못 되었는지 확인 좀 부탁드립니다.
public void save_DB() {
// TODO Auto-generated method stub
ListView v = getListView();
Adapter adapter = v.getAdapter();
SparseBooleanArray checked = v.getCheckedItemPositions();
String id;
String name = null;
String number;
Cursor c;
Cursor DB_c;
boolean bool = true;
db_phone = new Phone_Number_DB(this, null, null, 0);
try{
db = db_phone.getWritableDatabase();
}catch(SQLiteException ex){
// db = db_phone.getReadableDatabase();
}
for (int i = 0; i < checked.size(); i++) {
if(checked.valueAt(i) == true) {
c = (Cursor) adapter.getItem(i);
id = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
name = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
number = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
DB_c = db.rawQuery("SELECT id FROM phone_number;", null);
while(DB_c.moveToNext()){
if(id.equals(DB_c.getString(0).toString()))
{
Log.i("TAG", id + "같은 값이 있습니다! ");
bool = false;
break;
}
else
{
bool = true;
}
}
if(bool)
{
Log.i("TAG", id + "같은 값이 없습니다 ! 새로 추가!!");
db.execSQL("INSERT INTO phone_number VALUES(null, '"+id+"', '" + name + "', '" + number +"');");
bool = false;
}
}
else
{
c = (Cursor) adapter.getItem(i);
id = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
Toast.makeText(this, "id : "+id, Toast.LENGTH_SHORT).show();
db.execSQL("DELETE FROM phone_number where id="+id+";", null);
}
}
DB_c = db.rawQuery("SELECT id, name, number FROM phone_number", null);
Log.i("TAG", "--------- table 확인 !! ---------------");
while(DB_c.moveToNext()){
Log.i("TAG", DB_c.getString(0).toString());
Log.i("TAG", DB_c.getString(1).toString());
Log.i("TAG", DB_c.getString(2).toString());
}
Log.i("TAG", "--------- table 확인 !! ---------------");
}