当使用像这样的结构时,我可以避免打开的DataReader异常(“已经有一个与此命令关联的打开的DataReader,它必须先关闭”)?使用嵌套命令时可以避免打开的DataReader异常吗?
public void FirstMethod()
{
using (var command = connection.CreateCommand())
{
command.CommandText = "...";
using (var reader = command.ExecuteReader())
{
// do something with the data
SecondMethod();
}
}
}
public void SecondMethod()
{
using (var command = connection.CreateCommand())
{
command.CommandText = "...";
using (var reader = command.ExecuteReader()) // Exception
{
}
}
}
此致
那么我会这样做,如果第二种方法将基于相同的SQL语句,这当然不是这种情况(否则,为什么我需要的方法?)。 – 2009-09-01 12:01:25
@Ian:所有变量在C#中都是强类型的,但是你声明它们。 (C#4,当它被释放时,将允许使用'动态'变量,但它们与'var'关键字无关。) – LukeH 2009-09-01 12:13:00
是的,var关键字只是隐藏了具体类型,但隐含地表示它。所以你可以写“int i = 1”以及“var i = 1”,两个语句都是相等的。 – 2009-09-01 12:24:54