在 ASP.NET 应用程序中关闭 MySQL 连接的最佳方法是什么?

new*_*bie 1 c# mysql asp.net-mvc

我开发了一个简单的应用程序,它允许用户在本地数据库中输入数据,但最终它会在生产环境中有许多同时连接,其中包括存储在数据中心的数据。

现在我的应用程序可以读取(从两个不同的表)和写入其中一个,但它至少有一个问题:我在用户结束为一名员工提交数据后立即关闭连接,我实际上想要应用程序允许在单个会话中输入其中的许多,因此流程将是:

(1) 。用户进入应用程序 > (2) 。用户保存员工 > (3) 。应用程序会通知用户输入的结果(可能是多个字段的重复值,这些字段会显示错误、成功保存的员工消息等)[在这里我关闭连接] > (4) 。回到(2),如果用户选择,我尝试再次打开它。


编辑:我在关闭连接后立即尝试输入新用户时遇到的错误是 "connection must be valid and open"

我期待一个 Singleton 对象处理这个,但实际上并没有这样做。

    private MySQLDataAccess()
    {
        this.openConnection();
    }

    private MySqlConnection Connection;

    private static MySQLDataAccess instance;

    public static MySQLDataAccess GetInstance()
    {
        if(instance == null)
        {
            instance = new MySQLDataAccess();
        }
        return instance;
    }
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是...

应用程序结束后,应用程序是否应该立即关闭与数据库的连接?这可能包括一个用户一次节省 50 多名员工。

或者我应该在每次保存用户时关闭连接,然后再次打开它以保存新用户?(这就是我现在正在尝试做的,但我做得不好)

D S*_*ley 7

最佳实践是不要为多个“工作单元”保持连接打开(甚至重复使用)。最有效的方法是使用using块:

using(MySqlConnection conn = ...)
{
    using(MySqlCommand cmd = ...)
    {
        // open connection
        // execute command
        // close connection (optional - the connection will be closed when 
        //                   it gets disposed, but it's more explicit this way)
    }
}
Run Code Online (Sandbox Code Playgroud)

即使出现异常,连接也会自动关闭。

此外,不要在块内进行任何需要用户输入的重试(例如“您输入了重复的值 - 再试一次”)。如果出现错误,请处理连接,获取新输入,然后创建新连接并重试。