ホームページ > データベース > mysql チュートリアル > SQLite for Android でプレースホルダーを含む IN 句を安全に使用する方法は?

SQLite for Android でプレースホルダーを含む IN 句を安全に使用する方法は?

Mary-Kate Olsen
リリース: 2025-01-18 17:16:09
オリジナル
794 人が閲覧しました

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 インジェクションが防止されます。

以上がSQLite for Android でプレースホルダーを含む IN 句を安全に使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート