小编典典

OleDbCommand参数的顺序和优先级

c#

我已经在最近的40分钟内调试了该查询,毕竟问题显然出在参数的顺序上。

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

然后以这种方式添加参数,请注意,最后两个参数已切换,但没有任何结果。

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

当我声明参数以其在queury中的显示方式时,一切正常。

我以为命名参数是解决此问题的首要条件!我在这里想念什么?

谢谢


阅读 275

收藏
2020-05-19

共1个答案

小编典典

根据http://msdn.microsoft.com/zh-
cn/library/system.data.oledb.oledbcommand.parameters.aspx,OleDbCommand不支持命名参数

当CommandType设置为Text时,OLE DB .NET
Provider不支持将命名参数传递给SQL语句或OleDbCommand调用的存储过程的命名参数。在这种情况下,必须使用问号(?)占位符。例如:

SELECT * FROM Customers WHERE CustomerID = ?

因此,将OleDbParameter对象添加到OleDbParameterCollection的顺序必须直接对应于命令文本中参数的问号占位符的位置。

因此参数的顺序很重要。

2020-05-19