在单个OleDbConnection上打开多个DataReader

时间:2011-10-05 19:02:23

标签: c# ado.net db2

我正在使用IBM OLE DB Provider连接到DB2。

我可以在一个OleDbConnection上打开多个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();
    }  

1 个答案:

答案 0 :(得分:1)

如果您现在拥有try / finally块,则连接将始终关闭。

不,您无法在单个连接上打开多个DataReader。如果您尝试这样的事情,您将获得例外。

From MSDN

  

请注意,当DataReader打开时,Connection正在使用中   完全由DataReader提供。您无法为Connection执行任何命令,   包括创建另一个DataReader,直到原始的DataReader   已关闭。

相反,打开2个连接(不要担心惩罚,因为最有可能你的连接被汇集)并确保你在finally块中关闭连接或者使用using语句。