C# 关於数据库连接关闭的异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 关於数据库连接关闭的异常相关的知识,希望对你有一定的参考价值。

private void button8_Click(object sender, EventArgs e)//点击 帐户查询

this.sqlConnection1.Open();
SqlCommand sqlcon6 = new SqlCommand();
sqlcon6.Connection = this.sqlConnection1;
sqlcon6.CommandText = "select Caccount from enter_Customer";
SqlDataReader dr1=sqlcon6.ExecuteReader();
while (dr1.Read())

this.CustomerMessagelistBox.Items.Add(dr1[0].ToString());

this.sqlConnection1.Close();


系统提示异常:没有关闭连接,但是最后一句我不是已经关闭了吗?本人菜鸟,请高手给出详细指点,谢谢
都不是啊~~~ 还是提示“连接未关闭”

你仅仅是关闭了数据库链接,并没有关闭SqlDataReader的链接
应该在this.sqlConnection1().close()之前加上
dr1.Close();
dr1.Dispose();
参考技术A dr1.close();
this.sqlConnection1.Close();
参考技术B dr1.close();
this.sqlConnection1.Close();
建议你使用下面的方式来打开连接
using(this.sqlConnection1)
//处理代码
SqlCommand sqlcon6 = new SqlCommand();
sqlcon6.Connection = this.sqlConnection1;
sqlcon6.CommandText = "select Caccount from enter_Customer";
SqlDataReader dr1=sqlcon6.ExecuteReader();
while (dr1.Read())

this.CustomerMessagelistBox.Items.Add(dr1[0].ToString());

使用using会自动帮你关闭连接

(34)C#里使用try-catch-finally

在开发的过程中,经常会碰到这样的问题,比如连接一个数据库,在查询的过程中由于某种原因导致异常抛出,因此没有及时地关闭数据库连接,导致数据库连接一直还连着,这时候再进行新的查询,突然发现连接不上了,数据库老是报连接超出限制。因为原来的连接一直连接着,并没有关闭。因为C#垃圾回收还没有回收,这样就存在问题。要解决这个问题,我们需要使用try-catch-finally。

下面这个例子就是演示这种情况,比如文件打开之后,由于读写有异常,导致不能正常地关闭文件,所以下次再打开就会导致出错。

不使用try-catch-finally的代码如下:

static void CodeWithoutCleanup()

    FileStream? file = null;
    FileInfo fileInfo = new FileInfo("./file.txt");

    file = fileInfo.OpenWrite();
    file.WriteByte(0xF);

    file.Close();

添加try-catch-finally的代码如下:


                

以上是关于C# 关於数据库连接关闭的异常的主要内容,如果未能解决你的问题,请参考以下文章

(34)C#里使用try-catch-finally

C#怎么判断数据库是不是连接成功?

c#对数据库访问完应关闭连接

UDP Socket:一个现有的连接被远程主机强行关闭

C#打开关闭数据库连接

SQL 连接字符串在 C# 中无法识别并抛出异常