首页 > 后端开发 > C++ > 当 CommandType 为 Text 时,OleDbCommand 参数顺序重要吗?

当 CommandType 为 Text 时,OleDbCommand 参数顺序重要吗?

DDD
发布: 2024-12-30 17:46:12
原创
171 人浏览过

Does OleDbCommand Parameter Order Matter When CommandType is Text?

OleDbCommand 参数顺序和优先级:期望不一致的情况

使用 OleDbCommand 构造查询时,确保参数顺序准确至关重要遵循 SQL 语句中的顺序。一个常见的误解是假设命名参数消除了这一要求。然而,正如深入调试会话所揭示的那样,当 CommandType 设置为 Text 时,OleDbCommand 缺乏对命名参数的支持。

在给定的示例中:

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;
登录后复制

但是没有返回结果,说明不一致。对参数重新排序以匹配 SQL 语句后,查询将成功执行:

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

这与 http://msdn.microsoft.com/en-us/library/system.data 上的文档一致。 oledb.oledbcommand.parameters.aspx,它明确指出 OleDbCommand 不支持文本模式下 SQL 语句的命名参数。相反,必须使用问号 (?) 占位符,并且集合中 OleDbParameter 对象的顺序必须严格对应于它们在命令文本中的位置。

以上是当 CommandType 为 Text 时,OleDbCommand 参数顺序重要吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板