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 インジェクションが防止されます。
以上がSQLite for Android でプレースホルダーを含む IN 句を安全に使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。