web-dev-qa-db-fra.com

Paramètres SqlCommand Add vs. AddWithValue

Quand dois-je utiliser Parameters. Add/AddWithValue? Dans l'exemple MSDN suivant, ils utilisent Parameters.Add pour int et Parameters.AddWithValue pour string

command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;

command.Parameters.AddWithValue("@demographics", demoXml);

Quel est le meilleur à utiliser pour datetime

25
Yakov

Utilisez Add si vous voulez rendre tout explicite avec un peu plus de travail. Utilisez AddWithValue si vous êtes paresseux. AddWithValue dérivera le type du paramètre de sa valeur, assurez-vous donc que c'est le bon type. Vous devriez par exemple analyser un string vers int si c'est le bon type.

Il y a une raison pour éviter Add, si votre type de paramètre est int vous devez être prudent avec le surcharge qui prend le nom du paramètre et un objet depuis lors - ne autre surcharge est choisie avec le SqlDbType- enum .

De remarques (la surcharge de méthode est même obsolete maintenant):

Soyez prudent lorsque vous utilisez cette surcharge du SqlParameterCollection.Add méthode pour spécifier les valeurs des paramètres entiers. Étant donné que cette surcharge prend une valeur de type Object, vous devez convertir la valeur intégrale en type Object lorsque la valeur est nulle ... Si vous n'effectuez pas cette conversion, le compilateur suppose que vous essayez d'appeler le SqlParameterCollection.Add(string, SqlDbType) surcharge.

37
Tim Schmelter