在 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中文網其他相關文章!