当我点击从数据库中获取数据时,我正在使用Web应用程序,我收到以下错误:
ExecuteReader需要一个开放且可用的连接。连接的当前状态已关闭。
ExecuteReader需要一个开放且可用的连接。该 连接的当前状态已关闭。
我在一个单独的类上声明我的连接如下:
public Database()
{
valid = false;
using (connection = new SqlConnection(connectionString))
{
connection.Open();
}
}
我收到错误的地方:
我从WebForm中调用它。当连接已经打开时,为什么会出现此错误(我以前使用odbc连接并且工作正常,但是SqlConnection无法正常工作)
是什么原因?
答案 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