Maison >développement back-end >C++ >L'ordre des paramètres est-il important dans les requêtes OleDbCommand utilisant des espaces réservés de point d'interrogation ?
En tentant de déboguer une requête pendant 40 minutes, il a été découvert que l'ordre des paramètres joue un rôle crucial. La requête en question est la suivante :
SELECT * FROM tblSomething WHERE id = @id AND debut = @dtDebut AND fin = @dtFin
Cependant, lorsque les paramètres ont été 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;
aucun résultat n'a été renvoyé. L'inversion de l'ordre de @dtDebut et @dtFin a résolu le problème.
Il était initialement supposé que les paramètres nommés avaient été introduits pour éviter de telles dépendances d'ordre. Cependant, selon MSDN :
Le fournisseur OLE DB .NET ne prend pas en charge les paramètres nommés pour transmettre des paramètres à une instruction SQL ou à une procédure stockée appelée par un OleDbCommand lorsque CommandType est défini sur Text. Dans ce cas, l'espace réservé au point d'interrogation (?) doit être utilisé.
Par conséquent, il est essentiel de maintenir l'ordre correct des paramètres lors de l'utilisation d'OleDbCommand avec des paramètres spécifiés à l'aide de l'espace réservé au point d'interrogation.
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!