使用 SQLCommand - 它是否会释放传递给字符串的项

本文关键字:字符串 释放 SQLCommand 是否 使用 | 更新日期: 2023-09-27 18:33:05

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

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

使用 SQLCommand - 它是否会释放传递给字符串的项

字符串始终按值传递。所以,如果我正确理解你的问题,你的字符串应该保持不变。using 语句将仅释放该命令。

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

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

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

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

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

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

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

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

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

希望这有帮助。