在c#中关闭一个mysql数据库的线程

时间:2009-10-08 18:23:32

标签: c# mysql resource-management

在C#中从Windows窗体运行对MySql数据库的查询后,关闭步骤的正确方法是什么?

这样一个简单的开放式足够近吗?

conn.Open();

//querycode

conn.Close():

4 个答案:

答案 0 :(得分:3)

尝试使用:

using(MySqlConnection conn = new MySqlConnection(connString))
{
    conn.Open();
} // conn is automatically closed and disposed at the end of the using block

答案 1 :(得分:0)

使用之后需要清理的资源的类通常会实现 IDisposable 接口。这意味着它提供了一个名为Dispose()的函数,可用于释放资源。

对于一次性对象,您可以使用 using 语句:

using ( SomeDisposableClass c = new SomeDisposableClass() ) {

    // ... your code here

} // c.Dispose() automatically called here, freeing up resources

如果类被正确编码,它应该在其Dispose()函数中释放任何资源 - 无论是数据库连接,打开的文件句柄等。

这意味着MySQL可能会与Dispose()中的数据库断开连接,因此您可能不需要显式调用c.Close() - 但总是检查文档以确定。

答案 2 :(得分:0)

你可以这样做,你也可以将连接对象包装到using块中,如下所示:

using (var con = new MySqlConnection(/*connection string*/))
{
    con.Open();
    //do stuff
    // con.Close(); //don't need this it will be closed automatically* 
}

(* see

答案 3 :(得分:0)

不,你问题中的代码不够好。如果你的查询抛出异常,你就不会及时关闭它()它会一直挂起,直到垃圾收集器注意到它为止。

您需要将对象包含在using块中,如其他人所示,或者至少将其包含在try / finally结构中。