2013-07-07 2 views
0

내가 안드로이드에 rawQuery으로 아래의 문을 통과하고있어에 selectionArgs로 필드 이름을 전달 :안드로이드 - rawQuery

SELECT DISTINCT ltUsers._id,ltUsers.NAME,ltUsers.GLOBAL_ID, ltGroups.GROUP_NAME 
     FROM ltUsers 
     JOIN ltGroups ON (ltUsers.GROUP_ID = ltGroups.GLOBAL_ID)  
     WHERE ltgroups.GLOBAL_ID = ? " + 
     ORDER BY ltUsers.NAME ASC,ltgroups.GLOBAL_ID ASC; 

을 rawQuery으로 다음과 같이

Cursor c = db.rawQuery(sql,args) 

그것은 경우 잘 작동합니다 매개 변수에 값을 전달합니다.

String[] args = new String[]{"2"} 

그러나 나는 또한 WHERE 절에 GLOBAL_ID에 의해 제한 모든 행을 표시 할 수 있어야합니다. 때 그러나

WHERE ltGroups.GLOBAL_ID = ltGroups.GLOBAL_ID 

: - 단지 바로 문에 매개 변수를 작성하여뿐만 아니라 안드로이드 - 안드로이드 이외의 내 SQLite 데이터베이스의 덤프에 테스트 다음 절은이 작업을 수행 할 수있는 유효한 방법이 될 방법을 보여줍니다 필드 참조 ltGroups.GLOBAL_ID 또는 [ltGroups].[GLOBAL_ID]을 매개 변수로 전달하면 rawQuery의 모든 행을 반환하지 못합니다. 이것이 일어날 수있는 이유에 대한 아이디어가 있습니까? 추가 정보를 생성하는 데 만족합니다.

답변

1

매개 변수는 항상 다른 값이 아닌 특정 값을 대체합니다.

문자열 "ltGroups.GLOBAL_ID"을 매개 변수 배열에 넣으면 정확히 문자열 인 것으로 해석됩니다.

은 (단지 WHERE 절을 생략, 모든 레코드를 표시합니다.) 그에 대한

+0

감사합니다, 나는 의심대로입니다. 모든 행을 요청할 때 다른 SQL을 실행하기 위해 조건부를 두어 휘몰아 치는 일을해야한다는 것을 의미합니다. –

관련 문제