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

SQLite update 문이 실행이 안됩니다...ㅠ

0 추천
public Cursor NameCountUpdate(){ 
        String countNAMEs, nameCOUNT; 
        Cursor countID = mDB.rawQuery("select name from namecount;", null); 
        while (countID.moveToNext()){ 
            countNAMEs = countID.getString(countID.getColumnIndex("name")); 
            Cursor cName = mDB.rawQuery("select count(*) from smscount where subject Like '%" + countNAMEs +"%';", null);
            DLog.e("name : ", countNAMEs); 
            while (cName.moveToNext()){ 
                nameCOUNT = cName.getString(cName.getColumnIndex("count(*)"));
                mDB.rawQuery("update namecount set count = '" + nameCOUNT + "' where name = '" + countNAMEs + "';", null);
                DLog.e("count : ", nameCOUNT); 
            } 
        } 
        return countID; 
    }

namecount TABLE

_id integer

name text

count text

 

smscount TABLE

_id integer

number text

subject text

date text

 

모든 컬럼은 String 으로 변환해서 집어 넣었구요

select문은 다 정상 실행 되는데 update 문이 안되네요...

어디서 틀린건지 안보이는데 알려주실 용자분 안계신가요...?ㅠㅠ

크레닌 (290 포인트) 님이 2013년 4월 19일 질문
로그캣에 에러는 안뜹니다..ㅠ

3개의 답변

0 추천
 
채택된 답변
rawQuery() 로 update구문 하지마시고 execSQL()  를 써보세요
bangbang (8,820 포인트) 님이 2013년 4월 22일 답변
크레닌님이 2013년 4월 23일 채택됨
public boolean NameCountUpdate(String cNAME, String nCOUNT){
        ContentValues values = new ContentValues();
        values.put(DataBases.NameCount.COUNT, nCOUNT);
        return mDB.update(DataBases.NameCount._TABLENAME, values, "name="+cNAME, null) > 0;
    }

update문 써서 처리 하니까 돼네요!

답변 갑사합니다.
0 추천
우선 쿼리에 들어가있는 세미콜론(;)은 빼주시구요.

 

count, name 값이 제대로 존재 하는지 확인해주시구요.

 

오토커밋이 되고있는지 혹은 커밋을 하고있는지 여부를 확인해보시기 바랍니다.
이라슈 (8,770 포인트) 님이 2013년 4월 19일 답변
sqlite 알아보니까 커밋을 지원안한다는 말이 있는데... 어떻게 해야 할까요...?ㅠ

혹시 몰라서 updqte 문 다음 줄에
mDB.rawQuery("commit", null);
추가해서 실행해봤는데 결과는 같습니다..ㅠ
0 추천

에러가 안 뜨다고 하니 아닐 수 도 있지만  한번해보시겠어요?

 

・[select count(*) from]->[select count(*) as count from]
・[cName.getColumnIndex("count(*)")]->[cName.getColumnIndex("count")]
 
이게 아니라면 역시 자동 commit이 안된는 걸수도... 로그로 출력하는 nameCount는 제데로 나오나요?
 
뚱땡이토끼 (1,440 포인트) 님이 2013년 4월 19일 답변
위에 셀렉트문으로 출력하는 값은 로그캣에 제대로 나옵니다..ㅠ
04-21 13:26:12.184: E/name :(322): test
04-21 13:26:12.196: E/count :(322): 2
04-21 13:26:12.214: E/name :(322): coco
04-21 13:26:12.214: E/count :(322): 1
이런식으로 제대로 출력이 되는데 왜 update문이 안될까요...?ㅠ
...