2010-06-08 9 views
4

je me demandais, puis un paramètre être utilisé plus d'une fois dans la même requête, comme ceci:Puis-je utiliser un paramètre plusieurs fois dans la même requête?

MySqlParameter oPar0 = new MySqlParameter("e164", MySqlDbType.String); 
oPar0.Value = user.E164; 
string sSQL0 = "Delete from callmone.call where (caller=?e164 or called=?e164);"; 
clsDatabase.ExecuteSQL(sSQL0, oPar0); 

Est-ce possible ou devrais-je écrire 2 paramètres?

+0

Avez-vous essayé pour voir si cela fonctionne? – AndrewC

+0

Ok, il y avait un problème d'id, les choses ont fonctionné à la fin, mais je suis rassuré que la méthode est valide, merci. – Terry

Répondre

4

Si le pilote de base de données gère les paramètres nommés, vous pouvez réutiliser le paramètre.

Si le pilote de base de données ne gère pas les paramètres nommés, les noms des paramètres sont ignorés et vous devez ajouter une valeur de paramètre pour chaque utilisation, dans l'ordre exact où ils sont utilisés. À partir du code que vous avez présenté, il semble que le pilote prenne en charge les paramètres nommés.

Si le code s'exécute sans erreur, cela fonctionne. Si le pilote ne prend pas en charge les paramètres de noms, le code entraînera une erreur car il n'y a qu'une seule valeur de paramètre.

+0

En effet, afaik mysql lui-même ne supporte pas nativement les paramètres nommés. Cependant, les implémentations et les pilotes sont souvent assez intelligents pour l'imiter/le mapper aux paramètres nuumbered. – Wrikken

2

Je ne connais aucune raison pour laquelle vous ne pouvez pas faire cela.

+0

Je suis coincé dans l'ère des dinosaures en utilisant DB2. Le pilote ne reconnaît pas les paramètres nommés. Donc, je dois simplement ajouter la même valeur plusieurs fois si nécessaire plus d'une fois. Peut-être qu'un jour je rejoindrai Doc et Marty dans le futur. – eaglei22