C# 在单个OLEDB连接上打开多个数据读取器

C# 在单个OLEDB连接上打开多个数据读取器,c#,ado.net,db2,C#,Ado.net,Db2,我正在使用IBMOLEDB提供程序连接到DB2 我可以在单个OLEDB连接上打开多个DataReader。此提供程序是否会为每个DataReader隐式打开其他连接 如果是,此连接将自动关闭还是保持打开状态,直到连接超时 OleDbConnection connection = new (connectionString); OleDbDataReader reader = null; try { connection.Open(); reader =

我正在使用IBMOLEDB提供程序连接到DB2

我可以在单个OLEDB连接上打开多个DataReader。此提供程序是否会为每个DataReader隐式打开其他连接

如果是,此连接将自动关闭还是保持打开状态,直到连接超时

  OleDbConnection connection = new (connectionString);
  OleDbDataReader reader = null;
  try
    {
      connection.Open();
      reader = OleDbHelpher.ExecuteNonQuery(connection, CommandType.Text,query1);
      while (reader.Read())
      {
        Console.WriteLine(reader[0].ToString());
      }
      reader.Close();

      reader = OleDbHelpher.ExecuteNonQuery(connection, CommandType.Text,query2);
      while (reader.Read())
      {
        Console.WriteLine(reader[0].ToString());
      }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    finally
    {
     connecton.Close();
    }  

如果您现在有一个try/finally阻塞,连接将始终关闭

不可以,在一个连接上不能打开多个
DataReader
。如果您尝试这样的操作,您将得到一个异常

:

请注意,当DataReader打开时,连接正在使用中 由那个数据阅读器独家提供。您不能为连接执行任何命令, 包括创建另一个DataReader,直到原始DataReader 关门了


相反,打开2个连接(不要担心惩罚,因为您的连接很可能是池连接),并确保在finally块中关闭连接,或者使用语句。

如果您现在使用try/finally块,则连接将始终关闭

不可以,在一个连接上不能打开多个
DataReader
。如果您尝试这样的操作,您将得到一个异常

:

请注意,当DataReader打开时,连接正在使用中 由那个数据阅读器独家提供。您不能为连接执行任何命令, 包括创建另一个DataReader,直到原始DataReader 关门了

相反,打开2个连接(不要担心惩罚,因为你的连接很可能是池连接),并确保在finally块中关闭连接,或者使用语句