OleDbCommand Parameter Order and Priority
In attempting to debug a query, it was discovered that the order of parameters in an OleDbCommand can affect the results. When the parameters were added out of order:
cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut; cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin; cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;
no results were returned. However, when the parameters were added in the same order as they appeared in the query:
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete; cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut; cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;
the query functioned properly.
This discrepancy stems from the fact that OleDbCommand does not support named parameters for text commands. As documented on MSDN:
The OLE DB .NET Provider does not support named parameters for passing parameters to an SQL statement or a stored procedure called by an OleDbCommand when CommandType is set to Text. In this case, the question mark (?) placeholder must be used.
Therefore, when using text commands with OleDbCommand, the order in which parameters are added to the collection is crucial. The order must correspond directly to the order of the placeholder question marks in the command text.
The above is the detailed content of Why Does Parameter Order Matter in OleDbCommand When Using Text Commands?. For more information, please follow other related articles on the PHP Chinese website!