OleDbCommand 参数顺序和优先级
在 OleDbCommand 中使用参数执行查询时,了解参数的顺序和优先级至关重要。尽管使用了命名参数,但当 CommandType 设置为 Text 时,OleDbCommand 不支持 SQL 语句或存储过程的命名参数。
因此,查询中必须使用问号 (?) 占位符。这些占位符在查询中出现的顺序与 OleDbParameter 对象添加到 OleDbParameterCollection 的顺序相对应。
考虑以下查询:
SELECT * FROM tblSomeThing WHERE id = @id AND debut = @dtDebut AND fin = @dtFin
要正确执行此查询,参数必须添加到 OleDbCommand 中,如下所示:
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete; cmd.Parameters.Add("?dtDebut", OleDbType.Date).Value = dateTraitementDebut; cmd.Parameters.Add("?dtFin", OleDbType.Date).Value = dateTraitementFin;
注意“@dtDebut”和“@dtFin”已分别替换为“?dtDebut”和“?dtFin”。问号占位符必须与它们在查询中出现的顺序相匹配。
在提到的调试示例中,将参数添加到集合中时会切换参数。这导致没有返回结果,因为 OleDbCommand 按照参数添加的顺序执行查询,而不是查询中指定的顺序。
因此,必须注意顺序和优先级使用问号占位符时 OleDbCommand 中的参数。否则可能会导致意外结果或错误。
以上是参数顺序如何影响 OleDbCommand 中的查询结果?的详细内容。更多信息请关注PHP中文网其他相关文章!