Вы не закрываете соединение и считыватель, когда возникло исключение, для этого вам нужно использовать finally
-блок попытки / перехвата или using-statement
, который закрывается неявно:
using (SqlConnection connection = new SqlConnection(connectionString))
{
using(SqlCommand command = new SqlCommand(queryString, connection)
{
connection.Open();
using(SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// do something with it
}
}
}
}
Кроме того, вы не должны использовать пустые блоки catch. Если соединение не может быть открыто, оно не может быть использовано. Затем вы должны записать это и выдать исключение, но не действовать так, как будто ничего не произошло.