C# try-catch/using中的数据库连接关闭位置
如果执行失败,确保db连接关闭哪个更好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
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注入的评论。我在这句话里忘了:)谢谢你的提醒。