Maison > base de données > tutoriel mysql > Comment utiliser en toute sécurité la clause IN avec des espaces réservés dans SQLite pour Android ?

Comment utiliser en toute sécurité la clause IN avec des espaces réservés dans SQLite pour Android ?

Mary-Kate Olsen
Libérer: 2025-01-18 17:16:09
original
794 Les gens l'ont consulté

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

Clause IN et espaces réservés

Question :

Les requêtes SQLite utilisant des clauses IN avec concaténation dynamique de chaînes dans Android sont confrontées aux défis suivants :

  • Les espaces réservés standard (?) n'ont pas été remplacés correctement.
  • Le remplacement direct de la chaîne concaténée peut exposer la requête au risque d'injection SQL.

Solution :

Pour paramétrer une clause IN, utilisez une chaîne de points d'interrogation délimités par des virgules dont la longueur est égale au nombre de valeurs à remplacer. Évitez d'utiliser des données externes pour garantir la validité des chaînes dynamiques.

<code>String[] names = { "name1", "name2" }; // 动态获取值
String query = "SELECT * FROM table WHERE name IN (" + makePlaceholders(names.length) + ")";
Cursor cursor = mDb.rawQuery(query, names);</code>
Copier après la connexion
<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>
Copier après la connexion

Cette approche garantit que les espaces réservés sont remplacés correctement et empêche l'injection SQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal