안녕하세요 안드로이드 디비에 관련된것을 만들고 있는데요
전화번호 목록을 받아와 ListView로 뿌려줍니다.
멀티 체크로 ListView는 만들어 져 있고요
체크 한값을 Save 버튼을 누르게 되면 저장 되어야 합니다.
다음 함수가 DB에 저장하는 함수를 구현 하고 있는 것입니다.
문제는 빨간색에서
DB에 있는 name과 체크된 name을 비교해서
DB에 있는 값이면 pass 하고
DB에 없는 값만 저장 하고자 합니다.
DB의 name 과 체크된 name과 비교해서 있는 값은 있다고 표시가 되는데
같은 값이 없으면 if문을 들어가질 않네요
붉은색 부분입니다
한번 보시고 수정해야 되는 부분좀 알려주세요 ㅠㅠ
너무 급한거라서 ㅜㅜ 추석때도 계속 잡고 있었는데 해결이 되지 않았습니다.
부탁드립니다.
public void save_DB() {
// TODO Auto-generated method stub
ListView v = getListView();
Adapter adapter = v.getAdapter();
SparseBooleanArray checked = v.getCheckedItemPositions();
String id;
String name;
String number;
Cursor DB_c;
boolean bool = false;
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) {
Cursor 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));
Toast.makeText(Phone_Address_Access.this, "before : "+name, Toast.LENGTH_SHORT).show();
DB_c = db.rawQuery("SELECT name FROM phone_number WHERE name='"+name+"';", null);
while(DB_c.moveToNext()){
String test = DB_c.getString(0).toString();
if(test.equals(name)) //DB의 name과 체크 된 name이 같은지 비교, 있으면 if문 실행
{
Log.i("TAG", name + "같은 값이 있습니다! ");
bool = false;
break;
}
else if(!(test.equals(name))) // 문제 되는 부분!!! 같지 않으면 if문 실행 해야 되는데 아예 들어 가질 않아요
{
Log.i("TAG", name +"같은 값이 없습니다 ! 새로 추가!!");
bool = true;
}
}
if(bool)
{
Log.i("TAG", "같은 값이 없습니다 ! 새로 추가!!");
// db.execSQL("INSERT INTO phone_number VALUES(null, '"+id+"', '" + name + "', '" + number +"');");
// bool = false;
}
}
}
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 확인 !! ---------------");
}
급하면 숙제 비스무리 할것 같네요. 스스로 하셔야 도움되는데, 그래도 좀 이상한 부분을 말씀드리면..
select 쿼리에서 조건으로 이미 걸러냈는데, else if 절에서 체크해도 안나오겠지요. 이미 그런 값이 걸러졌으니까요.