try catch / using中的数据库连接关闭位置

时间:2014-05-04 20:04:27

标签: c# mysql sql

如果执行失败,最好确保关闭数据库连接?

try
{
    using (var mySqlConnection = new MySqlConnection(DatabaseManagement.DatabaseConnectionString))
    {
        DatabaseManagement.DatabaseCommand = mySqlConnection.CreateCommand();
        DatabaseManagement.DatabaseCommand.CommandText = "INSERT INTO  lastlaptimes Values ('" + UserObject.UserName + "','" + _lastLapTime + "')";
        mySqlConnection.Open();
        DatabaseManagement.DatabaseCommand.ExecuteNonQuery();
    }
}
catch (MySqlException exception)
{
    Logger.Error(exception);
}

或者这个:

using (var mySqlConnection = new MySqlConnection(DatabaseManagement.DatabaseConnectionString))
{
    try
    {
        DatabaseManagement.DatabaseCommand = mySqlConnection.CreateCommand();
        DatabaseManagement.DatabaseCommand.CommandText = "INSERT INTO  lastlaptimes Values ('" + UserObject.UserName + "','" + _lastLapTime + "')";

        mySqlConnection.Open();
        DatabaseManagement.DatabaseCommand.ExecuteNonQuery();
    }
    catch (MySqlException exception)
    {
        mySqlConnection.Close();
        Logger.Error(exception);
    }
}

我遇到了与db有太多连接的问题,我想知道我的第一种方法是否导致连接问题,因为代码被多次调用并且新连接是打开并再次失败并将连接增加1。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这两者之间的唯一区别在于您是否明确调用Close语句(两者都有using语句,该语句会自动运行Dispose

所以真正的问题是 - Dispose关闭连接还是你需要明确地调用它?我相信答案是Dispose会为您调用此内容(请参阅this question)。这意味着要么运作良好 - 选择你喜欢的(我认为第一个在技术上是一行代码......)

相关问题