2010-12-10 7 views
0

내 데이터베이스 쿼리는 현재과 같이 설정할 수 있습니다 : 그들은이 기록으로어떻게이 쿼리를 rawQuery로 변환 할 수 있습니까?

가 편집, 그런데 내 변수 (_ID, CAT_ITEM 및 BUDGET_AMOUNT가) actualy 정확히 같은 텍스트와 서식을 포함, 바보 난 알고 있지만, 어쨌든 그게 문제 내가 그것을이 원하는 정확히 수행

private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, }; 
private String orderBy = _ID + " ASC"; 
private String whereIn = "IN_OUT='in'"; 

Cursor cursor = db.query(CAT_BUD_TAB, from, whereIn, null, null, null, orderBy); 

에게, 안하지만 나는 또한, 쿼리 문 대신 rawQuery를 사용 요령 (단지 가려고하고 테스트하고 싶어 나는 많은 문자열 변수가 필요하지 않을 것이다). 여기

내가 생각 해낸 무엇 :

private String incomeQuery = "SELECT _ID, CAT_ITEM, BUDGET_AMOUNT FROM CAT_BUD_TAB WHERE IN_OUT=’in’"; 
Cursor cursor = db.rawQuery(incomeQuery, null); 

그러나이 (I가되는 SQLException 이러한 열을 얻을) 작동하지 않습니다 그래서 난 차이가 무엇인지 해결하기 위해 노력하고있어, 나는 거기에 그냥 그림 내 진술에 문제가 있었지만 무엇을 모르는지. 누구든지 조언을 해줄 수 있습니까? 감사합니다

첫 번째 예에서

답변

1

코드에서 _ID, CAT_ITEM, BUDGET_AMOUNTCAT_BUD_TAB은 문자열 필드입니다. 그들의 값은 필드 이름과 동일합니까?

작은 따옴표도 두 쿼리간에 서로 다르게 보입니다.

문제와 관련이 없지만 결과 순서를 복제하려면 ORDER BY _ID ASC을 SQL 끝에 추가해야합니다.

+0

오른쪽 변수는 위에서 말한 것을 잊어 버렸지 만 똑같은 텍스트와 서식을 포함하고 있습니다. (String CAT_ITEM = "CAT_ITEM"등)하지만 지적 해 주셔서 감사합니다. 어쨌든 당신 말이 맞아! 나는 하나의 qoutes가 다르게 보였다는 것을 알지 못했다! (나는 가이드에서 작업 한 것을 복사했습니다.) 지적 해 주셔서 감사합니다. 지금 키보드에서 어떤 키를 눌러야 문제가 해결 될지 고맙습니다 :) 감사합니다! – Holly

1

, 다음과 같습니다

private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, }; 

이 맞다면, 그것은 당신이 세 가지 변수를 가질 것을 의미 _ 컬럼의 이름 ID, CAT_ITEMBUDGET_AMOUNT을 너의 식탁에. 같은 테이블의 이름을 보유하고있는 CAT_BUD_TAB도 마찬가지입니다.

String incomeQuery = "SELECT " + _ID + ", " + CAT_ITEM + ", " + BUDGET_AMOUNT + " FROM " + CAT_BUD_TAB + " WHERE IN_OUT=’in’"; 

을 그리고 그냥 말했다하기 : 원시 쿼리가 정확하려면

, 다음과 같이 작성해야이 문자열을 구성 할 수있는 좋은 방법이 아닙니다. 대신 StringBuilder을 사용하여 완료해야합니다. 나는 이것을 단순화를 위해 여기에서 좋아한다.

+0

오, 감사합니다. 나는 이것을 언급 했어야합니다.하지만 세 변수는 실제로 내용과 정확히 같습니다! (나도 알아, 어리석은.)하지만 그것은 아마도 문제가되지 않는다는 것을 의미합니다. 어쨌든 응답 주셔서 감사합니다! 그리고 나는 StringBuilder를 살펴볼 것입니다. – Holly

+0

@Holly : 이름과 같은 값을 가진 변수를 사용하는 것은 어리석지 않습니다. 항상 변수를 항상 사용하십시오.) 질문에 답하십시오. 더 많은 오류. 'SQLException no such column'은 아마도 조금 더 말합니다 (아마도 컬럼이 발견되지 않았기를 바랍니다). – Nailuj

+0

@Holly : 한 가지 더 할 수 있습니다. 실제로 원시 쿼리를 수행하는 것을보기 위해서'SELECT * FROM ... '이라고 쓰십시오. 작동하는 경우 필요한 열만 반입하여 다시 시도 할 수 있습니다. – Nailuj

관련 문제