0
나는 나에게 빈 커서 제공이 rawQuery 썼다 :rawQuery 인수 이상한 동작?
String query = "SELECT * FROM " + TBL_NAME + " WHERE ? = ?";
String[] args = new String[] {COL_NAME, Long.toString(id)};
Cursor c = db.rawQuery(query, args);
을하지만 난이 예상되는 결과를 다음 쿼리를 얻을 경우 :
String query = "SELECT * FROM " + TBL_NAME + " WHERE " + COL_NAME + " = " + Long.toString(id);
Cursor c = db.rawQuery(query, null);
나는 테이블 이름을 사용할 수 없다는 수집 'rawQuery'메소드의 인수 중 하나입니다. 그러나 나는 왜 그럴 수 있는지 확신하지 못한다. (나는 그것을 ''로 둘러싼다고 추측하지만 그것은 단지 추측이다.)
그 외에도 args는 쿼리에 사용자 입력을 포함하기 위해서만 사용되어야한다는 결론을 내 렸습니다. 그 점에 대해서는 SQLiteStatement
을 사용하는 것이 더 낫습니다.
요약 : 어디에서 (왜 가능한지) shoul 나는 문자열을 병합 한 대신 rawQuery에서 args를 사용합니다. 왜 SQLiteStatement (또는 단순히 쿼리) 대신 rawQuery를 사용해야합니까?
나는 문서의 알고 있었다 :하지 "선택"으로 "인수"
또는 더 나은 사용은 이렇게 될 것입니다 귀하의 경우에는이 방법
로 그러나 나는 다음과 같이 missleading 중 하나라고 생각합니다. "검색어에? where를 포함 할 수 있습니다. ** selectArgs의 값으로 대체됩니다."_ 및 Where 절에서 사용합니다 (with잘못된 결과). 당신의 대답을 받아들이지 않았습니다. 내가 가진 rawQuery와 (그리고없는) args, SQLiteStatement 그리고 심지어 쿼리의 차이점 (관련이 있다면)에 관심이 있습니다. 내 마음에 혼란스러워지기 시작했다. – Asincrono
If "chooseArgs의 값으로 대체하십시오"라고 말합니다. COL_NAME은 (는) "selection"이라고하고 "id"는 "selectionArgs"입니다. 그것이 작동하지 않는 이유입니다. –