使用SQLCommand - 它会处理传递给字符串的项吗?

时间:2012-05-04 10:39:56

标签: c# dispose sqlcommand

我正在使用'using'命令为我配置/关闭连接。如果我从using命令中将项目传递给字符串,一旦关闭/处理连接,它们是否会保留?

如果确实如此,那么确保项目保留在字符串中而不是被处理的最佳方法是什么,以便我以后可以使用它们。

3 个答案:

答案 0 :(得分:0)

如果我理解正确,你的意思是作为命令参数传递的对象?据我所知,当处置命令时,它们不会被处理掉。确保正确处置的最简单方法是手动访问SqlCommand.Parameters

例如,您可以使用以下代码。

if (command.Parameters != null)
{
    foreach (object parameter in command.Parameters)
    {
        IDisposable disposableParameter = parameter as IDisposable;
        if (disposableParameter != null)
        {
            disposableParameter.Dispose();
        }
    }
}

答案 1 :(得分:0)

我认为你搞砸了几个概念。 构造SQL查询时,您有2个选项,使用字符串构造它,如:

"Select from " + TableName + " where " + ColumnName + "=" + ColumnValue ...

非常糟糕!绝对不要这样做,你必须使用参数,例如:

"Select from " + "TableName + " where " + ColumnName + "=@Value"

使用SqlParameter注入感兴趣的值后。

在这两种情况下,实际值的生命周期与SQL字符串无关。 值生存期取决于您如何使用包含该值的变量。

希望这有帮助。

答案 2 :(得分:0)

字符串总是按值传递。所以,如果我正确理解你的问题,你的字符串就应该保持不变。 using语句只会处理命令。