为了账号安全,请及时绑定邮箱和手机立即绑定

从SqlCommand对象获取生成的SQL语句?

从SqlCommand对象获取生成的SQL语句?

C#
九州编程 2019-08-02 17:02:51
从SqlCommand对象获取生成的SQL语句?我有以下代码:Using cmd As SqlCommand = Connection.CreateCommand     cmd.CommandText = "UPDATE someTable SET Value = @Value"     cmd.CommandText &= " WHERE Id = @Id"     cmd.Parameters.AddWithValue("@Id", 1234)     cmd.Parameters.AddWithValue("@Value", "myValue")     cmd.ExecuteNonQueryEnd Using我想知道是否有任何方法可以将最后的SQL语句作为字符串获得,它应该如下所示:UPDATE someTable SET Value = "myValue" WHERE Id = 1234如果有人想知道为什么我会这么做:用于日志记录(失败)语句可以将其复制并粘贴到企业管理器中,以便进行测试
查看完整描述

3 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

出于日志记录的目的,恐怕没有更好的方法可以做到这一点,只需要自己构造字符串:

string query = cmd.CommandText;foreach (SqlParameter p in cmd.Parameters){
    query = query.Replace(p.ParameterName, p.Value.ToString());}


查看完整回答
反对 回复 2019-08-03
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您不能这样做,因为它不生成任何SQL。

参数化查询(CommandText)作为准备好的语句的等价物发送到SQLServer。执行命令时,参数和查询文本将分别处理。在任何时候,都不会生成完整的SQL字符串。

您可以使用SQLProfiler在幕后查看。



查看完整回答
反对 回复 2019-08-03
  • 3 回答
  • 0 关注
  • 332 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信