0xF*_*xFF 16 c# oledb ado.net ms-access
我在最后40分钟一直在调试这个查询,问题显然是参数的顺序.
SELECT * FROM tblSomeThing WHERE id = @id AND debut = @dtDebut AND fin = @dtFin
Run Code Online (Sandbox Code Playgroud)
然后我用这种方式添加参数,注意最后两个参数都是切换的,我没有得到任何结果.
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;
cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;
cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;
Run Code Online (Sandbox Code Playgroud)
当我按照它们在queury中出现的方式声明参数时,一切都很完美.
我认为命名参数是解决这个问题的第一步!我在这里想念的是什么?
谢谢
Art*_*hur 29
根据http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters.aspx OleDbCommand不支持命名参数
当CommandType设置为Text时,OLE DB .NET提供程序不支持将参数传递给SQL语句或OleDbCommand调用的存储过程的命名参数.在这种情况下,必须使用问号(?)占位符.例如:
SELECT * FROM Customers WHERE CustomerID = ?
Run Code Online (Sandbox Code Playgroud)
因此,OleDbParameter对象添加到OleDbParameterCollection的顺序必须直接对应于命令文本中参数的问号占位符的位置.
所以参数的顺序很重要.