Maison >base de données >tutoriel mysql >Parameters.Add vs Parameters.AddWithValue : quelle est la vraie différence et laquelle dois-je utiliser ?
Explication détaillée des différences entre Parameters.Add et Parameters.AddWithValue
La méthodeParameters.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!