안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드이라기보다는 db문제인데영
private void Refresh(){
int _rank = 1;
_Cursor = rankDB.rawQuery("select * from rankTBL order by score desc limit 7", null);
if(_Cursor.moveToFirst()){
do{
_Data2 = new HashMap<String,String>();
// _Data2.put("Rank", Integer.toString(_rank));
_Data2.put("Name", _Cursor.getString(1));
_Data2.put("Score", Integer.toString(_Cursor.getInt(2)));
_Data.add(_Data2);
_rank++;
}
while(_Cursor.moveToNext());
}
rankAdapt.notifyDataSetChanged();
}
score열에 점수가 입력되어있는대 높은 수치대로 차례차례 자료를 가져 오는건대요.
잘 안되네요. 여러 수치가 있는대 하나의 수치만 계속 뜨네요. 물론 7개까지
90000
80000
70000
60000
50000
40000
30000
이렇게 뜨게 하고싶은대
90000
90000
90000
90000
90000
90000
90000
이렇게 뜹니다 ㅠ_ㅠ 도와주세용
2010.08.11 01:58:18
지나가다 보니...쿼리문이 잘못된것으로 보이네요.
중복열을 제거하시려면
select distinct * from rankTBL order by score desc limit 7;
처럼 하시면 될 겁니다.
안드로이드에 내장된 sqlite가 어떤식으로 동작하는지를 모르겠으나, order by를 사용하는 시점에서 sorting이 필요하기 때문에 성능이 느려질 것 같습니다.
대략적인 프로그랭 구조를 보니,
필터된 데이터를 in memory로 sorting하는게 더 빠르게 수행될 것처럼 보이네요.
(물론 in memory에 적재될 수 없다면 쿼리로 해결하는것이 더 편하구요)