Android에서 동적 문자열 연결과 함께 IN 절을 사용하는 SQLite 쿼리는 다음과 같은 문제에 직면합니다.
IN 절을 매개변수화하려면 대체할 값의 개수와 길이가 같은 쉼표로 구분된 물음표 문자열을 사용하세요. 동적 문자열의 유효성을 보장하려면 외부 데이터를 사용하지 마십시오.
<code>String[] names = { "name1", "name2" }; // 动态获取值 String query = "SELECT * FROM table WHERE name IN (" + makePlaceholders(names.length) + ")"; Cursor cursor = mDb.rawQuery(query, names);</code>
<code>public static String makePlaceholders(int len) { if (len < 1) { throw new IllegalArgumentException("Length must be at least 1"); } StringBuilder sb = new StringBuilder(len * 2 - 1); sb.append("?"); for (int i = 1; i < len; i++) { sb.append(",?"); } return sb.toString(); }</code>
이 접근 방식을 사용하면 자리 표시자가 올바르게 교체되고 SQL 삽입이 방지됩니다.
위 내용은 Android용 SQLite에서 자리 표시자와 함께 IN 절을 안전하게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!