首頁 > 資料庫 > mysql教程 > 如何在 Android 版 SQLite 中安全地使用佔位符的 IN 子句?

如何在 Android 版 SQLite 中安全地使用佔位符的 IN 子句?

Mary-Kate Olsen
發布: 2025-01-18 17:16:09
原創
759 人瀏覽過

How to Safely Use the IN Clause with Placeholders in SQLite for Android?

IN 子句與佔位符

問題:

在 Android 中使用動態字串連接的 IN 子句的 SQLite 查詢面臨以下挑戰:

  • 標準佔位符 (?) 未正確替換。
  • 直接替換連接的字串可能會使查詢面臨 SQL 注入的風險。

解決方法:

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板