Maison > base de données > tutoriel mysql > Comment paramétrer les clauses SQL IN avec un nombre variable d'arguments ?

Comment paramétrer les clauses SQL IN avec un nombre variable d'arguments ?

Patricia Arquette
Libérer: 2025-01-25 16:32:09
original
348 Les gens l'ont consulté

How to Parameterize SQL IN Clauses with a Variable Number of Arguments?

SAT SQL dans la clause, traitez les paramètres variables

Pour empêcher SQL d'injecter des vulnérabilités, le paramétrage contenant SQL dans la clause In est crucial. Cependant, lors du traitement des paramètres de quantité variable, cela peut se compliquer. Ce qui suit est la méthode de résolution de ce problème dans SQL Server 2008:

Utiliser le paramétrage C # Chaque paramètre, vous pouvez utiliser les méthodes suivantes:

Ce code crée un paramétré dans les classes qui contiennent un nombre spécifié de paramètres. Le résultat est:
<code class="language-csharp">string[] tags = new string[] { "ruby", "rails", "scruffy", "rubyonrails" };
string cmdText = "SELECT * FROM Tags WHERE Name IN ({0})";

string[] paramNames = tags.Select(
    (s, i) => "@tag" + i.ToString()
).ToArray();

string inClause = string.Join(", ", paramNames);
using (SqlCommand cmd = new SqlCommand(string.Format(cmdText, inClause)))
{
    for (int i = 0; i < tags.Length; i++)
    {
        cmd.Parameters.AddWithValue(paramNames[i], tags[i]);
    }
    // ... 执行查询 ...
}</code>
Copier après la connexion

cmd.CommandText = "SELECT * FROM Tags WHERE Name IN (@tag0, @tag1, @tag2, @tag3)"

cmd.Parameters["@tag0"] = "ruby"

cmd.Parameters["@tag1"] = "rails"

Il est important de noter que cette solution ne provoque pas de risque d'injection SQL car le texte injecté n'est pas basé sur l'entrée de l'utilisateur et ne contient que des valeurs fixes. Les utilisateurs entrent en toute sécurité dans les paramètres.

cmd.Parameters["@tag2"] = "scruffy" Bien que le plan de requête de cache puisse être bénéfique, ils ne peuvent pas toujours fournir des avantages significatifs pour une question simple comme celle-ci. Cependant, en commençant par la version SQL Server 7, SQL Server interroge automatiquement, mettant en évidence l'importance de la paramétrage pour la sécurité.

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!

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