db 쿼리를 구성하고 있습니다.
where 조건에 String 배열(선택된 임의의 _id 값들)을 넣어 조회하고, 순차적으로 조회된 값들(_id 값에 해당하는 name값)을 다시 String 배열에 저장하고자 합니다.
즉, 조회할 _id 값이 String [] user ={ "10", "11", "12", "13" }; 이렇게 네 가지로 이루어져 있다면,
select id from Chat_users where _id = user
으로 조회하는 식...이라고 보시면 되겠습니다.
cursor = mHelper.getReadableDatabase().query(table, columns, "_id=?", user, null, null, null);
같은 방식으로 하였더니, 예상했던대로 where 조건절에 하나의 값만 들어갈 수 있다고 하면서 null exception 에러가 출력되는데,
해당 방식처럼 배열로 where 조건을 주어서 순차적으로 출력하려 할 때에는 어떠한 방법을 사용해야 하는지 궁금합니다.
제가 나름 해결한 방법을 간단히 적어보겠습니다.
String[] A = {"1", "2", "3"} 라는 배열이 있다고 가정할 때,
select _id from user where _id = '이부분';
라는 쿼리를 실행시켜서 _id가 1, 2, 3인 값을 각각 쿼리하려 했습니다.
간단히 생각해보면 for문으로 돌려서 해결할 수 있습니다.
for (int b = 0; b < A.length; b++) { // A 배열의 크기만큼 for문을 돌려주고
String[] abc = new String[] { "" }; //더미로 사용할 배열을 선언해줍니다. 이 더미배열에는 쿼리할 내용이 들어갑니다.
abc[0] = String.valueOf( A [ b ]); // 이 배열의 크기를 한개로 지정해주고, A 배열의 b 순서에 해당하는 값을 넣어줍니다.
cursor = mHelper.getReadableDatabase().query(table, columns, "_id=?", abc, null, null, null);
// 이렇게 저장된 abc 배열의 값으로 쿼리를 실행하고
for (int l = 0; l < cursor.getCount(); l++) {
user_id.add(cursor.getString(0));
cursor.moveToNext();
// cursor의 갯수만큼 for을 돌리고
// user_id 에 해당 커서값을 저장,
// 그리고 movetonext 실행 반복
// 위의 주석에서 보여지다시피 해당 쿼리로 나온 결과값을 user_id arraylist에 저장합니다.
}
}
막상 보면 별것 아니지만 혹시나 저같은 분들을 위해 기록을 남겨봅니다. 도움주신 분들께 감사합니다.
간단하게 "_id=? OR _id=? OR _id=?" 해서 조건 3개를 넣고 배열에 3개 넣으면 되지 않나요?
조건이 단순히 3개에 해당된다면 나오는거라면 저렇게 해도 나오지 않을까 생각합니다.




아래 링크를 확인해 보시죠.
유사한 질문으로 보입니다.
http://stackoverflow.com/questions/3985263/using-an-array-to-query-an-sqlite-database-android