当前位置:  开发笔记 > 数据库 > 正文

oledb/ado.net:获取命令的文本,替换所有参数

如何解决《oledb/ado.net:获取命令的文本,替换所有参数》经验,为你挑选了1个好方法。

是否可以将OleDbCommand所有参数的文本替换为其值?例如,在下面的代码中,我正在寻找一种获取查询文本的方法

SELECT * FROM my_table WHERE c1 = 'hello' and c2 = 'world'

在我完成分配参数后.

var query = "SELECT * FROM my_table WHERE c1 = ? and c2 = ?";
var cmd = new OleDbCommand(query, connection);
cmd.Parameters.Add("@p1", OleDbType.WChar).Value = "hello";
cmd.Parameters.Add("@p2", OleDbType.WChar).Value = "world";

Joel Coehoor.. 8

不:您必须自己遍历参数集合,执行string.Replace()以获取等效项.当你必须使用?语法而不是@parametername语法时,这是特别痛苦的.

这样做的原因是从未组装完整的字符串.参数并发送到服务器并作为数据处理,并且从不包含在字符串中.

同样,我理解你的痛苦.如果他们包含一些.ComposeSQL()你可以调用的方法用于调试目的,这可能会很好,这也许会产生一个编译器警告,以帮助避免在生产中使用.



1> Joel Coehoor..:

不:您必须自己遍历参数集合,执行string.Replace()以获取等效项.当你必须使用?语法而不是@parametername语法时,这是特别痛苦的.

这样做的原因是从未组装完整的字符串.参数并发送到服务器并作为数据处理,并且从不包含在字符串中.

同样,我理解你的痛苦.如果他们包含一些.ComposeSQL()你可以调用的方法用于调试目的,这可能会很好,这也许会产生一个编译器警告,以帮助避免在生产中使用.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有