0

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

像这样一个简单的打开关闭就足够了吗?

conn.Open();

//querycode

conn.Close():
4

4 回答 4

3

尝试使用:

using(MySqlConnection conn = new MySqlConnection(connString))
{
    conn.Open();
} // conn is automatically closed and disposed at the end of the using block
于 2009-10-08T18:27:09.690 回答
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() ——但请务必检查文档以确保。

于 2009-10-08T18:27:50.673 回答
0

你这样做没关系,你也可以using像这样将连接对象包装成块:

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

(*

于 2009-10-08T18:27:59.860 回答
0

不,您问题中的代码还不够好。如果您的查询引发异常,您将不会及时关闭()它,并且它将一直挂起,直到垃圾收集器注意到它。

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

于 2009-10-08T18:32:12.253 回答