Comparaison des méthodes de liaison de paramètres .NET : Parameters.Add(string, object)
vs. Parameters.AddWithValue
Dans la liaison de paramètres pour les opérations de base de données .NET, les deux méthodes Parameters.Add(string, object)
et Parameters.AddWithValue
peuvent implémenter l'ajout de paramètres, mais leur syntaxe et leurs fonctions sont légèrement différentes.
Parameters.Add(string, object)
Méthode
Parameters.Add(string, object)
La méthode nécessite trois paramètres : le nom du paramètre, le type de données SQL et la valeur du paramètre. Par exemple, le code suivant ajoute un paramètre entier nommé « @ID » avec la valeur « customerID » :
<code class="language-csharp">command.Parameters.Add("@ID", SqlDbType.Int); command.Parameters["@ID"].Value = customerID;</code>
Parameters.AddWithValue
Méthode
Parameters.AddWithValue
simplifie ce processus sans spécifier explicitement le type de données SQL. Il déduit automatiquement le type de données en fonction de la valeur transmise. Un exemple est le suivant :
<code class="language-csharp">command.Parameters.AddWithValue("@demographics", demoXml);</code>
Comparaison des fonctions
Malgré une syntaxe différente, Add
et AddWithValue
effectuent finalement la même opération : ajouter un objet Parameters
à la collection SqlParameter
. L'implémentation interne appelle le code suivant :
<code class="language-csharp">return this.Add(new SqlParameter(parameterName, value));</code>
Améliorations et dépréciations de la syntaxe
La méthodeParameters.AddWithValue
est introduite pour résoudre d'éventuelles ambiguïtés dans la méthode Add
. Le deuxième paramètre de la méthode Add
peut accepter un objet ou une énumération SqlDbType
, ce qui peut facilement prêter à confusion.
Pour améliorer la clarté du code, Microsoft recommande d'utiliser AddWithValue
et de déprécier la méthode Add(string, object)
. AddWithValue
Attendez explicitement une valeur d'objet et déduisez automatiquement le type de données.
Conversions implicites et problèmes potentiels
Notez que Add(string, object)
peut provoquer un comportement inattendu en raison de conversions implicites. Par exemple, passer l'entier 0 comme deuxième argument est implicitement converti en SqlDbType.Int
. Cependant, si vous augmentez l'entier à 1, une autre surcharge de Add(string, object)
est appelée car elle ne peut pas être implicitement convertie en énumération.
Conclusion
Bien que la méthode Parameters.Add(string, object)
soit toujours prise en charge, son utilisation n'est pas recommandée en raison de son ambiguïté potentielle. Parameters.AddWithValue
Fournit un moyen plus direct et plus clair d'ajouter des paramètres, réduisant le risque d'erreurs et garantissant une interprétation correcte des types de données.
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!