Maison >base de données >tutoriel mysql >Parameters.Add vs Parameters.AddWithValue : quelle est la vraie différence et laquelle dois-je utiliser ?

Parameters.Add vs Parameters.AddWithValue : quelle est la vraie différence et laquelle dois-je utiliser ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-10 12:36:42291parcourir

Parameters.Add vs. Parameters.AddWithValue: What's the Real Difference and Which Should I Use?

Explication détaillée des différences entre Parameters.Add et Parameters.AddWithValue

La méthode

Parameters.Add vous permet de spécifier le nom du paramètre, le SqlDbType et la valeur. La syntaxe correcte est la suivante :

<code class="language-csharp">command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;</code>

En revanche, Parameters.AddWithValue a une syntaxe plus concise et ne nécessite pas de spécifier SqlDbType :

<code class="language-csharp">command.Parameters.AddWithValue("@demographics", demoXml);</code>

Cependant, lors de l'utilisation de Parameters.AddWithValue avec la même syntaxe que Parameters.Add, aucune erreur de compilation ne se produit. Fait intéressant, le code s’exécute également normalement.

Explication détaillée

En interne, les deux méthodes utilisent la même méthode :

<code class="language-csharp">return this.Add(new SqlParameter(parameterName, value));</code>

Parameters.AddWithValue a été introduit pour remplacer Parameters.Add afin d'améliorer la clarté du code. Dans la surcharge de Parameters.Add, le deuxième argument est de type object, ce qui peut prêter à confusion quant à la surcharge à utiliser. Cette distinction est importante car la surcharge a un comportement très différent.

Considérons l'exemple suivant :

<code class="language-csharp">SqlCommand command = new SqlCommand();
command.Parameters.Add("@name", 0);</code>

Bien qu'il semble appeler la surcharge Add(string name, object value), il appelle en fait la surcharge Add(string name, SqlDbType type). En effet, 0 est implicitement convertible en type énumération.

Par conséquent, l'utilisation de Parameters.AddWithValue supprime les ambiguïtés potentielles et améliore la lisibilité du code. Il est recommandé d'utiliser Parameters.AddWithValue de préférence pour obtenir un code plus clair et plus facile à maintenir.

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:
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