Maison >base de données >tutoriel mysql >Parameters.Add(string, object) vs AddWithValue : quelle est la vraie différence ?
Parameters.Add(string, object)
et Parameters.AddWithValue
Bien qu'apparemment distincts, Parameters.Add(string, object)
et Parameters.AddWithValue
obtiennent le même résultat dans l'ajout de paramètres SQL. La principale différence réside dans la façon dont ils créent l'objet SqlParameter
sous-jacent.
Les deux méthodes utilisent finalement la méthode Add(SqlParameter)
en interne. La distinction découle de leur approche de la SqlParameter
construction :
Parameters.Add(string, object)
: Cette méthode accepte le nom et la valeur du paramètre séparément. Il convertit ensuite implicitement la valeur en type de données approprié avant de générer le SqlParameter
.Parameters.AddWithValue
: Cette méthode prend un seul argument englobant à la fois le nom et la valeur du paramètre. Il déduit le type de données à partir de la valeur fournie pour créer le SqlParameter
.L'utilisation de Parameters.Add
avec la syntaxe de AddWithValue
(par exemple, command.Parameters.Add("@demographics", demoXml)
) peut être compilée sans erreur en raison de la compatibilité des types object
. Cependant, cette pratique n'est pas recommandée et considérée comme incorrecte.
AddWithValue
La création de Parameters.AddWithValue
est née de deux considérations clés :
Parameters.Add
surchargée.Parameters.Add(string name, object value)
peut présenter un comportement imprévisible avec des conversions d'énumération implicites. AddWithValue
, en acceptant un seul argument, atténue ce problème potentiel.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!