0

我正在使用“使用”命令为我处理/关闭连接进行一些 SQL 连接。如果我从 using 命令中将项目传递给字符串,它们会在连接关闭/处理后保留吗?

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

4

3 回答 3

0

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

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

if (command.Parameters != null)
{
    foreach (object parameter in command.Parameters)
    {
        IDisposable disposableParameter = parameter as IDisposable;
        if (disposableParameter != null)
        {
            disposableParameter.Dispose();
        }
    }
}
于 2012-05-04T10:46:04.597 回答
0

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

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

很坏!永远不要这样做,您必须使用参数,例如:

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

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

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

希望这可以帮助。

于 2012-05-04T10:47:39.800 回答
0

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

于 2012-05-04T11:13:35.193 回答