我正在使用'using'命令为我配置/关闭连接。如果我从using命令中将项目传递给字符串,一旦关闭/处理连接,它们是否会保留?
如果确实如此,那么确保项目保留在字符串中而不是被处理的最佳方法是什么,以便我以后可以使用它们。
答案 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语句只会处理命令。