有这样的方法代码:
public bool CheckInputedLogin(string login)
{
string query = "SELECT * FROM Accounts WHERE login = @login";
try
{
command = DataBase.GetConnection().CreateCommand();
command.CommandText = query;
command.Parameters.AddWithValue("@login", login);
DataBase.OpenConnection();
reader = command.ExecuteReader();
return reader.HasRows; // gets a value indicating whether the reader contains one or more lines
}
catch (Exception ex)
{
MessageBox.Show($"Ошибка:\n\"{ex.Message}\"\n" +
$"Обратитесь к системному администратору для её устранения.",
"Ошибка работы с базой данных", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
DataBase.CloseConnection();
return false;
}
重点是只有在最后返回 false 之前才关闭与数据库的连接。如何从 try 块关闭连接?您之前不能关闭它return reader.HasRows,该方法将无法正常工作。然后就没有任何意义了。
还有一个选择
这里
finally它总是在tryor完成后执行catch。