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

sqlite 관련 안드로이드 책에 나오는건데 에러나는것 같네요.

0 추천
06-14 14:19:14.079: E/AndroidRuntime(26691):  
at com.example.test02.ptag.toString(ptag.java:151)

sqlite 연동 관련 작업중에 db table에서 데이터를 select 할때 계속 어플이 죽길래

에러 로그를 확인해보니 위와 같은 메세지가 떠서 그 부분을 주석처리 하니까 일단 어플이 죽지는 않네요.

해당 소스는 아래인데요.

public String toString(){
  return String.format("[%d] %s (%d)", idx, tagname, description, tagtype, taggroup, eulo, euhi, euunit, lotrip, hitrip, risk, cvalue, alarm, regdate);
 }

이게 뒤에 컬럼명만 제가 임의로 추가를 한거고, 구문 자체는 제가 공부하는 책

(****에서 나온 "***** ** 안드로이드 프로그래밍")의 249페이지 마지막줄에 나오는

구문 그대로인데요....이것 참 책을 제대로 써놔야지, 책에 나오는게 에러가 나니까 시간적인 손해가 크네요.

근데 위 구문에 무슨 문제가 있는건가요?

일단 저걸 주석처리하니까 어플이 죽지는 않는데, 데이터를 불러와서 리스트에 뿌려줄때

제가 입력했던 값이 나오는게 아니라, com.example.test02.ptag@413879d8   이런식으로

프로젝트명이랑 각각 다른 숫자의 조합이 리스트에 표시되네요.

아마도 주석처리했던 저 구문이 저런 문자를 제대로 표시해주는 역할을 하는것 같은데....

해당 소스 어떤점이 문제인지 좀 알고 싶습니다.

만약에 진짜 책에 나온게 잘못된것이 맞다면 출판사에 항의 좀 할려구요.

개님의습성 (2,500 포인트) 님이 2013년 6월 14일 질문
개님의습성님이 2013년 6월 14일 수정
책이 잘못된게 아니었네요. 해당 출판사의 서적에 대해 오해한 점  죄송합니다. 책 잘못 아닙니다.

1개의 답변

+1 추천
포멧문이 %d %s %d  순서니 뒤에 오는 인자는 정수, 문자, 정수 가 돼야 합니다.

코드가 너무 짧아서 확실치 않지만 그냥 tostring 부분을 봤을대 idx 는 정수가 맞을거 같고 tagname 은 문자열이 맞을거 같은데 description 이 문자열일거 같네요. 포멧문에서는 정수를 기대하는데 문자열이 들어왔으니 에러가 나는게 아닐까요. 글구 placeholder 의 수에 비해 뒤에 인자들이 너무 많은거 같네요.
엥꼬 (1,170 포인트) 님이 2013년 6월 14일 답변
아 맞습니다. 맨 앞에 idx 외에는 뒤에 모두다 문자열입니다.
그렇다면 %s 를 뒤에오는 컬럼의 갯수만큼 추가를 시켜주면 될까요?
앗 그렇게 해보니까 문자열도 제대로 제가 입력한대로 쫙 나오고, 다 완벽하게 잘 돌아가네요.
답변 정말 감사합니다.
도움이 됐다니 다행이네요. 기왕이면 답변으로 채택 해주시면 더 좋을거 같은데요 ㅋㅋ
...