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

DB의 ID값의 사이즈?

0 추천

 

DB

1 내용
2 내용
3 내용

 

DB의 ID값의 사이즈를 얻어오는 방법이 알고싶습니다.

DB의 특정 내용을 for문을 돌려서 얻어오려고합니다. 

 

	public void onClick(View v) {

		for (int i = 1; i < 10; i++) {
			DB_time_h = Integer.parseInt(Alarm_main.DBHelper.getColumn(i)
					.getString(Alarm_main.DBCursor.getColumnIndex("time_h")));
			DB_time_m = Integer.parseInt(Alarm_main.DBHelper.getColumn(i)
					.getString(Alarm_main.DBCursor.getColumnIndex("time_m")));
			int getAlarm_id = Integer.parseInt(Alarm_main.DBHelper.getColumn(i)
					.getString(Alarm_main.DBCursor.getColumnIndex("alarm_id")));

			setAlarm(this, getAlarm_id);
		}
	}

 

이런식으로 포문의 i를 사용해서 db의 id값을 i로 넣어서 10까지 반복되도록했습니다.

그런데 뭔가 문제가있는지 에러가 나옵니다.

다음과 같은 에러가 나옵니다.

인덱스와 관련된 에러인거같은데 .. 

왜 이런 에러가 나올까요? 

---------------------------------------------------------에러의 원인-------------------------------

에러의 원인인 역시 DB의 id값을 넘어서인거 같습니다.
존재하지않는 DB 값을 찾으려해서 에러가 나는것 같습니다.
 
 
지금 생각나는 해결책은 역시 db의 id값중 마지막 id를 알아야하는데 ... 배열처럼 사이즈값으로 알수도 없고 ...
어떻게 해야할까요 ?

 

Hui (590 포인트) 님이 2013년 3월 2일 질문
Hui님이 2013년 3월 2일 수정

4개의 답변

0 추천
아웃오브바운드는 리스트나 배열에서 자신이 가진 인덱스 밖의 값을 호출해서 난 에러입니다

예를들어 배열을 arr[10] 으로 선언했는데 -1번지나 10번지를 호출하면 생기게 되는것이죠

 데이터베이스에서 자료를 넘겨받는게 제대로 작동하지 않는것으로 보입니다.

쿼리를 날려 SELECT로 커서를 얻는 방법을 써보세요
Noizbuster (11,970 포인트) 님이 2013년 3월 2일 답변
0 추천
db중에 마지막값을 얻어오시려는거죠?

그럼 SELECT쿼리로 짜시고 마지막이니까 id를 내림차순(큰수가위로해서)

정렬한후에 맨처음것만 리밋1 줘서 가져오세여~

물론 여기서 없을경우 예외처리도 하셔야게지요
건방진프로그래머 (26,630 포인트) 님이 2013년 3월 3일 답변
0 추천
max() 쓰세요 SQL좀 공부하셔야 할듯
익명사용자 님이 2013년 3월 3일 답변
0 추천
답변 감사드립니다 . 조금 다른 방법으로 해결했습니다.

질문에서는 id값의 마지막 id값을 얻어오는 질문이었지만 ..

id 값의 마지막이 row의 갯수와 같아서 getCount () 메소드를 사용해서 조금 쉬운 방법으로 해결했습니다.

 

프로그램 입문한지 얼마안되서 아는게 없습니다. 많은 조언 부탁드립니다.
Hui (590 포인트) 님이 2013년 3월 3일 답변
리스크가 큰 방법이네요. Id값은 Delete 하면 count와 달라질 수 있습니다. 별로 좋은 방법은 아니네요.
pulak 님 말이 맞아요 그건 잘못된 방법입니다
...