我有以下代码:
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.ExecuteNonQuery
End Using
我想知道是否有任何方法可以将最终的 SQL 语句作为字符串获取,它应该如下所示:
UPDATE someTable SET Value = "myValue" WHERE Id = 1234
如果有人想知道我为什么要这样做:
- 用于记录(失败的)语句
- 可以将其复制并粘贴到企业管理器以进行测试
最佳答案
出于日志记录的目的,恐怕没有比自己构造字符串更好的方法了:
string query = cmd.CommandText;
foreach (SqlParameter p in cmd.Parameters)
{
query = query.Replace(p.ParameterName, p.Value.ToString());
}
关于c# - 从 SqlCommand 对象获取生成的 SQL 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/265192/