“连接未关闭,连接的当前状态为已打开”C#的问题。

来源:百度知道 编辑:UC知道 时间:2024/09/21 05:49:52
不知道问题出在哪里~代码如下。

用的是全局做连接变量,public static SqlConnection conn = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=Student;Integrated Security=SSPI");

private void UserGet()
{
string sql = "Select UserName from Users";
try
{
SqlCommand comm = new SqlCommand(sql,DBcon.conn);
DBcon.conn.Open();
SqlDataReader dr = comm.ExecuteReader();
while(dr.Read())
{
comboBox1.Items.Add(dr["UserName"].ToString());
}
dr.Close();
}
catch(Exception ey)
{
MessageBox.Show(ey.ToString());
}
finally
{
DBcon.conn.Close();
}
}

应该

呵呵 这句代码应该没有问题的

“连接未关闭,连接的当前状态为已打开”C#的问题。

我遇见过这样的问题 你可以看看上一个窗体或者别的窗体

有没有关闭

如果没有关闭的话 这段代码也会出现异常的

肯定是别的地方调用了DBcon.conn而且没关闭
仔细检查一下是否在其他地方return了
另外调用DBcon.conn之前可以先判断DBcon.conn.ConnectionState是否等于ConnectionState.Open再打开

为了保证连接安全,在每个实例化时使用using代码块吧,这样无论如何在出了代码块后都会自动调用析构函数关闭连接,这样就保证了连接的正常关闭,跟try...catch配合使用就万无一失了

using (SqlCommand comm = new SqlCommand(sql,DBcon.conn))
{
//代码执行块
}

就你这段代码看来并没有任何错误,检查你整个应用程序看是否有其他窗体或事件调用了该连接变量而没有关闭。

问题出在哪一句呢?
是那个CATCH块弹出的错误么?