Как избавиться от & ldquo; Соединение не было закрыто. Текущее состояние соединения открыто. & Rdquo; ошибка? [Дубликат]

Вы также можете использовать этот код с некоторыми предосторожностями.

  • Параметр # 1: обрабатывать исключение явно, например, показывать диалог сообщения и останавливать выполнение текущего рабочего процесса. Например:
    try
        {
            String stringValue = "1234";
    
            // From String to Integer
            int integerValue = Integer.valueOf(stringValue);
    
            // Or
            int integerValue = Integer.ParseInt(stringValue);
    
            // Now from integer to back into string
            stringValue = String.valueOf(integerValue);
        }
    catch (NumberFormatException ex) {
        //JOptionPane.showMessageDialog(frame, "Invalid input string!");
        System.out.println("Invalid input string!");
        return;
    }
    
  • Параметр # 2: сброс затронутой переменной, если поток выполнения может продолжаться в случае исключения. Например, с некоторыми изменениями в блоке catch
    catch (NumberFormatException ex) {
        integerValue = 0;
    }
    

Использование строковой константы для сравнения или любого рода вычислений всегда является хорошей идеей, поскольку константа никогда не возвращает нулевое значение.

10
задан user2830395 30 September 2013 в 15:34
поделиться

2 ответа

Вероятно, в блок try, который вы не обрабатываете, генерируется исключение. См. Это примечание в MSDN для try-finally :

В рамках обработанного исключения гарантированный запуск завершенного блока. Однако, если исключение не обрабатывается, выполнение блока finally зависит от того, как запускается операция исключения.

В любом случае я рекомендовал бы обертывать соединение в блоке using:

using (SqlConnection connection = new SqlConnection(connectionString))
{
     //etc...
}

В качестве альтернативы добавьте блок catch к try-finally:

    conn.Open();

    try
    {

    }
    catch
    {

    }
    finally
    {
        conn.Close();
    }
14
ответ дан DGibbs 31 August 2018 в 22:33
поделиться

вы должны закрыть соединения, как только закончите работу. Попробуйте открыть соединения в кратчайшие сроки. Однако лучше использовать его, чтобы вызвать метод Dispose даже в случае исключений.

using (SqlConnection conn= new SqlConnection(conStr))
{
     //etc...
}

ИЛИ

1) Откройте соединение

2) Доступ к базе данных

3) Закройте соединение

 //conn.Open();

        try
        {
          conn.Open();
          //Your Code

        }
        finally
        {
           conn.Close();   
           conn.Dispose();//Do not call this if you want to reuse the connection
        }
2
ответ дан Suraj Singh 31 August 2018 в 22:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: