将sql命令写入文本文件

时间:2013-08-08 08:10:08

标签: c# sql ado.net

我想将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'

两者之间的

是最终字符串中的空值参数。

可以选择什么?

1 个答案:

答案 0 :(得分:1)

坦率地说,用值替换参数是(IMO)错误的事情;我们在mini-profiler中所做的是在输出的顶部欺骗declare语句,以便您可以将其复制并粘贴到SSMS中,而无需担心什么是参数,哪些是困难的 - 在原始TSQL中编码。例如,浏览此页面的迷你探查器输出,我看到

DECLARE @id int = 18121022,
        @type tinyint = 10;

(然后是很多特定于我们的tsql)

您可以浏览一下迷你探查器代码,看看我们如何输出它,但基本上它只涉及遍历参数,写一个简单的declare。如果您使用的是ASP.NET,那么mini-profiler也可以避免编写文件(而是让它在网站上实时提供给您的开发人员)。