ado.net - oledb/ado.net : Get the command's text, 替换了所有参数

标签 ado.net parameters oledb

是否可以获取 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";

最佳答案

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

这样做的原因是从未组装过完整的字符串。参数和发送到服务器并被视为数据,并且永远不会包含在字符串中。

尽管如此,我还是理解你的痛苦。如果它们包含某种 .ComposeSQL() 就好了您可以出于调试目的调用的方法,这可能还会产生编译器警告以帮助避免在生产中使用。

关于ado.net - oledb/ado.net : Get the command's text, 替换了所有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/178857/

相关文章:

.net - Hook Entity Framework 中的对象加载事件?

linq-to-sql - Entity Framework vs Linq to Entities vs Linq to SQL

asp.net - ADO.NET Entity Framework 或 ADO.NET

java - 阻止方法参数名称在 Android Studio 中突出显示

.net - Jet Engine - 255 个字符截断

c# - 设置在强类型数据集 TableAdapter 中使用的 CommandTimeout?

parameters - Facebook "like"在 url ex : fb_action_ids fb_action_types 中添加额外参数

MySQL 变量替换

c# - 无法找到使用 C# 插入 AS Access 数据库的代码

vb.net - DataColumn 的 AutoIncrement 始终返回 False