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

db 쿼리문에 에러 있는지 봐주세요ㅠㅠ

0 추천
Cursor cursor =db.rawQuery("SELECT SUM (amount) FROM abook WHERE state='expense' AND cate='"+cate+"'AND fname='"+year+"-"+month+"-__';", null);

state가 expense이고 cate는 받아온 cate,

fname은 받아온 year-받아온 month-_ _   일 경우에 amount의 합계를 구하려고 하는데요

(fname의 마지막 _ _는 어떤 값이던 ok)

int amount = cursor.getColumnIndex("amount");

 

두 번째 코드문에서 컬럼 인덱스가 -1이라고 에러가 나네요..ㅠㅠ

53 (580 포인트) 님이 2014년 2월 19일 질문

2개의 답변

0 추천
 
채택된 답변

SUM을 하셨기 때문에 cursor에는 당연히 amount 컬럼의 정보는 없고 합산된 값만 있습니다.

그냥 cursor.getInt(0); 로 합산된 값을 추출하시면 됩니다.
코딩인헬 (12,150 포인트) 님이 2014년 2월 19일 답변
53님이 2014년 2월 19일 채택됨
아니면 rawQuery 함수대신 longForQuery 함수 쓰시는걸 추천드립니다.
long sum = android.database.DatabaseUtils.longForQuery(db, "SELECT SUM (amount) FROM abook WHERE state='expense' AND cate='"+cate+"'AND fname='"+year+"-"+month+"-__';", null);
0 추천
cursor.getCount(); 함수로 행 갯수를 체크 해보시고 0이 아니면

cusor.moveToFirst(); 함수를 사용한 다음에 값을 가져와 보시길...
삽질하세 (1,250 포인트) 님이 2014년 2월 19일 답변
행 갯수는 한 개로 나왔고, moveToFirst()도 했는데 에러가 나요ㅠㅠ
컬럼 인덱스가 -1 이었군요 ;;;
SELECT SUM (amount) FROM abook 를
SELECT SUM(amount) amount FROM abook

int amount = cursor.getColumnIndex("amount"); 를
int amount = cursor.getInt(cursor..getColumnIndex("amount"));
로 해보세요
getColumnIndex 함수는 해당 컬럼의 값을 가져오는게 아니라 해당 컬럼의 인덱스 값을 가져오는 것입니다.

아래의 사이트를 참고 하세요
http://developer.android.com/reference/android/database/Cursor.html#getColumnIndex%28java.lang.String%29
...