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

안드로이드 rawQuery 리턴값에 대해 질문 드립니다.

0 추천

db에 값을 한개만 저장하고 싶어서

rawQuery에서 값이 있으면 update를 하고 값이 없으면 insert를 하는 소스를 코딩하고 있습니다.

그런데 자꾸 예외로 넘어가서요.. rawQuery에서 값이 없으면 null을 리턴하는 것이 아닌건가요??

무엇이 잘못 되었을까요 ㅠㅠ 도와주세요

 try {
   // DB객체 생성(DB가 존재하지 않으면 생성함)
   dbmgr = new DBManager(this);
   
   SQLiteDatabase sdb;
   
   //DB연결
   sdb = dbmgr.getWritableDatabase();


   Cursor cursor = sdb.rawQuery("select str_due_date from baby",null);
   
   if( cursor == null ){
    //baby 테이블에 추출정보 추가
    sdb.execSQL("insert into baby values('" + str_due_date + "', '" + str_sex + "');");

    Toast.makeText(v.getContext(), "insertOk", 0).show();
   }
   else
   {
    //baby 테이블 업데이트
    sdb.execSQL("update baby set due_date = '" + str_due_date + "', 'sex = '" + str_sex + " '");

    Toast.makeText(v.getContext(), "updateOk", 0).show();
   }
   
  } catch(SQLiteException e) {
   Toast.makeText(v.getContext(), "insertFail", 0).show();
  } finally {
   //DB닫음
   dbmgr.close();
  }

믕스 (170 포인트) 님이 2013년 6월 10일 질문

1개의 답변

0 추천
 
채택된 답변
일단 Cursor에 어떤 값이 들어있는지 log확인부터해주세요.

어느 부분에서 null 이 발생하는지, 에러가 뜨면 어떤 문제로 에러가 발생하는지 알아야 문제 해결이 될듯 합니다.
안드로메다개발자 (8,830 포인트) 님이 2013년 6월 10일 답변
믕스님이 2013년 6월 10일 채택됨
select구문 오류로 예외처리가 뜨는 것을 알았습니다!
rawQuery에서 select할 때 db에 값이 없으면 null을 반환하는 것은 맞나요??
에러구문이 nullPointException 이면, null이 넘어오겠죠 ?
아니면 size가 0일수도 있구요.. cursor를 log에 찍어보시면 어떤 값이 넘어오는지 보시구, 그 값이 있나 없냐에 따라서 쿼리문을 날려주시면 될듯합니다.
...