안녕하세요
아침에도 질문을 올렸는데..ㅠ 오늘 두개 올리네요..
시간표를 만들고 있는데
과목별로 색깔을 입력받아 색상코드(int형)를 DB에 저장했습니다.
그리고 다시 DB에서 꺼내서 int형 변수에 저장하려고 하니 에러가 나네요
코드 입니다.
int colorCode = cursor.getInt(cursor.getColumnIndex("color"));
에러메시지 입니다.
Caused by: java.lang.IllegalStateException: get field slot from row 0 col -1 failed
이 메시지는 col이 -1이라는건 DB에 "color"이라는 colomun이 없다는 뜻인거 같은데...
뭐가 문제인지 모르겠네요...
혹시 정수 표현 범위의 문제인가 하고 생각해봤는데
#AARRGGBB 식으로 표현한 16진수 색깔 코드는
2^32까지 표현 할 수 있으니까 int형에 저장할수 있을 것 같아 이 문제는 아닌것 같고..
16진수 색깔코드를 db에 int형으로 저장해서 사용해도 아무 문제 없나요?
헬퍼하고 핸들러는 확인했습니다 ㅠ
String subjectinfo = "CREATE TABLE subjectinfo (" +
"subject TEXT PRIMARY KEY, " +
"color INTEGER, " +
"category TEXT, " +
"website TEXT, " +
"prof_name TEXT, " +
"prof_tel TEXT, " +
"prof_email TEXT);";
public long insertToSubjectInfo(String subject, int color, String category,
String website, String prof_name,
String prof_tel, String prof_email ) {
ContentValues values = new ContentValues();
values.put("subject", subject);
values.put("color", color);
values.put("category", category);
values.put("website", website);
values.put("prof_name", prof_name);
values.put("prof_tel", prof_tel);
values.put("prof_email", prof_email);
return db.insert("subjectinfo", null, values);
}
다른곳에서도 이런 에러가 나왔었는데 그때도 db문제가 아니었던거 같은데...기억이 안나네요...
자료형 문제가 아니라면 다른곳을 봐야겠네요 ㅠ
감사합니다
일단 해당앱을 언인스톨 하고 다시 설치하세요 (Create Table문에 colors를 나중에 추가했으면 없을수도 있습니다.)
그리고 다시 테스트 해보시죠...
또한 moveToFirst도 하셔야할듯합니다.
잴 확실한건 에뮬에서 실행한 다음에 sqlite 파일을 열어서 확인해보는겁니다.
조건에 맞는 테이블과 레코드와 필드가 존재하는지를 확인하는거죠...
있으면, select쪽에 문제일수도 있구요....
그리고 cursor.getInt(cursor.getColumnIndex("color")); 에서
cursor.getColumnIndex("color"); 찍어보세요 진짜 -1인가...
이게 -1이라면 select 아니면 테이블 둘중하나는 문제가 있는거네요....




db create 문의 봐야 할 듯 한데요?
int의 문제가 아닌듯 합니다.