“ExecuteReader需要一个开放且可用的连接。连接的当前状态已关闭。”在WebForm上

时间:2016-03-23 13:30:30

标签: c# sql asp.net .net .net-4.0

当我点击从数据库中获取数据时,我正在使用Web应用程序,我收到以下错误:

ExecuteReader需要一个开放且可用的连接。连接的当前状态已关闭。

  

ExecuteReader需要一个开放且可用的连接。该   连接的当前状态已关闭。

我在一个单独的类上声明我的连接如下:

public Database()
{
    valid = false;

    using (connection = new SqlConnection(connectionString))       
    {                  
        connection.Open();
    }    
}

我收到错误的地方:

enter image description here

我从WebForm中调用它。当连接已经打开时,为什么会出现此错误(我以前使用odbc连接并且工作正常,但是SqlConnection无法正常工作)

是什么原因?

1 个答案:

答案 0 :(得分:1)

SQL连接仅在使用范围内打开:

  using (var connection = new SqlConnection(connectionString)) {
    connection.Open(); // open here
    ...
  } // close here

所以将命令放入using范围:

  using (var connection = new SqlConnection(connectionString)) {
    connection.Open(); 

    // command creation and execution should be within connection "using" scope
    using (var q = new SqlCommand()) {
      q.Connection = connection;
      ...

      // reader should be within command "using" scope
      using (var reader = q.ExecuteReader()) {
        ...
      }
    }  
    ...
  } // close here