我想将sql命令写入带有参数值的文本文件。 以下是我用适当的值替换参数的代码。
string commandText = commandInfo.CommandText;
if (commandInfo.Parameters.Count > 0)
{
foreach (SqlParameter parameter in commandInfo.Parameters)
{
commandText=commandText.Replace(parameter.ParameterName,parameter.Value==(object)DBNull.Value?(object)DBNull.Value:("'"+parameter.Value.ToString()+"'"));
}
}
尽管所有其他参数值都被正确替换,但是捕获是这样的。将具有空值的值视为空白,即'parameter1','param2'
两者之间的是最终字符串中的空值参数。
可以选择什么?
答案 0 :(得分:1)
坦率地说,用值替换参数是(IMO)错误的事情;我们在mini-profiler中所做的是在输出的顶部欺骗declare
语句,以便您可以将其复制并粘贴到SSMS中,而无需担心什么是参数,哪些是困难的 - 在原始TSQL中编码。例如,浏览此页面的迷你探查器输出,我看到
DECLARE @id int = 18121022,
@type tinyint = 10;
(然后是很多特定于我们的tsql)
您可以浏览一下迷你探查器代码,看看我们如何输出它,但基本上它只涉及遍历参数,写一个简单的declare
。如果您使用的是ASP.NET,那么mini-profiler也可以避免编写文件(而是让它在网站上实时提供给您的开发人员)。