Maison > développement back-end > C++ > L'ordre des paramètres OleDbCommand est-il important lorsque CommandType est Text ?

L'ordre des paramètres OleDbCommand est-il important lorsque CommandType est Text ?

DDD
Libérer: 2024-12-30 17:46:12
original
152 Les gens l'ont consulté

Does OleDbCommand Parameter Order Matter When CommandType is Text?

Ordre et priorité des paramètres OleDbCommand : un cas d'attentes mal alignées

Lors de la construction de requêtes à l'aide d'OleDbCommand, il est crucial de garantir l'ordre précis des paramètres suit la séquence dans l'instruction SQL. Une idée fausse courante tourne autour de l’hypothèse selon laquelle les paramètres nommés éliminent cette exigence. Cependant, comme l'a révélé une session de débogage approfondie, OleDbCommand ne prend pas en charge les paramètres nommés lorsque CommandType est défini sur Text.

Dans l'exemple donné :

SELECT * FROM tblSomeThing WHERE id = @id AND debut = @dtDebut AND fin = @dtFin
Copier après la connexion

Les paramètres sont ajoutés dans l'ordre suivant :

cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;
cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;
cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;
Copier après la connexion

Cependant, aucun résultat n'est renvoyé, indiquant une incohérence. Lors de la réorganisation des paramètres pour qu'ils correspondent à l'instruction SQL, la requête s'exécute avec succès :

cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;
cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;
cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;
Copier après la connexion

Cela correspond à la documentation disponible sur http://msdn.microsoft.com/en-us/library/system.data. oledb.oledbcommand.parameters.aspx, qui indique explicitement qu'OleDbCommand ne prend pas en charge les paramètres nommés pour les instructions SQL en mode texte. Au lieu de cela, des espaces réservés de point d'interrogation (?) doivent être utilisés et l'ordre des objets OleDbParameter dans la collection doit correspondre strictement à leur emplacement dans le texte de la commande.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal