OleDbCommand parameters order and priority

岁酱吖の 提交于 2019-11-26 01:02:13

问题


I have been debugging this query for the last 40 minutes, and the problem apparently is the order of the parameters after all.

SELECT * FROM tblSomeThing WHERE id = @id AND debut = @dtDebut AND fin = @dtFin

Then I add the parameters this way, notice that the two last parameters are switched, I get no results.

cmd.Parameters.Add(\"@id\", OleDbType.Integer).Value = idSociete;
cmd.Parameters.Add(\"@dtFin\", OleDbType.Date).Value = dateTraitementFin;
cmd.Parameters.Add(\"@dtDebut\", OleDbType.Date).Value = dateTraitementDebut;

When I declare the parameters the way they appear in the queury everything works perfectly.

I thought named parameters were at first place to address this problem! what am I missing here?

Thank you


回答1:


According to http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters.aspx OleDbCommand does not support named parameter

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. For example:

SELECT * FROM Customers WHERE CustomerID = ?

Therefore, the order in which OleDbParameter objects are added to the OleDbParameterCollection must directly correspond to the position of the question mark placeholder for the parameter in the command text.

So order of parameter is important.




回答2:


If I recall correctly, if the OleDbCommand in ADO.NET functions similarly to the older ADO library/libraries (used in VB6, VBA, etc.) then the parameter collection does not define parameters by name, only by position within the collection. This seems to be the behaviour you are experiencing.




回答3:


Not positive, but it doesn't look like your parameters are added in the same sequence, nor same named values as their "@" counterparts of the query...

@id,
@dtDebut 
then
@dateTraitementFin


来源:https://stackoverflow.com/questions/1476770/oledbcommand-parameters-order-and-priority

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!