在C#中从Windows窗体运行对MySql数据库的查询后,关闭步骤的正确方法是什么?
这样一个简单的开放式足够近吗?
conn.Open();
//querycode
conn.Close():
答案 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结构中。