Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# try-catch/using中的数据库连接关闭位置_C#_Mysql_Sql - Fatal编程技术网

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

C# try-catch/using中的数据库连接关闭位置,c#,mysql,sql,C#,Mysql,Sql,如果执行失败,确保db连接关闭哪个更好 try { using (var mySqlConnection = new MySqlConnection(DatabaseManagement.DatabaseConnectionString)) { DatabaseManagement.DatabaseCommand = mySqlConnection.CreateCommand(); DatabaseManagement.DatabaseComman

如果执行失败,确保db连接关闭哪个更好

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


感谢您的帮助。

它们之间的唯一区别在于您是否显式调用
Close
语句(两者都有一个
using
语句,该语句自动运行
Dispose


所以这里真正的问题是,
Dispose
关闭连接还是需要显式调用它?我相信答案是,
Dispose
将为您调用此功能(请参阅)。这意味着要么很好——选择你喜欢的(我想第一个在技术上是少一行代码……)

我更担心sql注入我会担心异常被吞没,当有人无法正确执行注入攻击时。@TonyHopkinson你说得对,我误解了他的问题。至少您可以管理异常。但这取决于您是否想编写更多或更少的代码。使用SQL参数化以避免注入。感谢您对SQL注入的评论。我在这句话里忘了:)谢谢你的提醒。