Вопрос

Каков правильный способ закрытия протектора после запуска запроса против базы данных MySQL из формы Windows в C#?

Простой открыт достаточно близко?

conn.Open();

//querycode

conn.Close():
Это было полезно?

Решение

Попробуй использовать:

using(MySqlConnection conn = new MySqlConnection(connString))
{
    conn.Open();
} // conn is automatically closed and disposed at the end of the using block

Другие советы

Это нормально, как вы делаете это, вы также можете обернуть объект соединения в using Блок как это:

using (var con = new MySqlConnection(/*connection string*/))
{
    con.Open();
    //do stuff
    // con.Close(); //don't need this it will be closed automatically* 
}

(*видеть)

Нет, код в вашем вопросе недостаточно хорош. Если ваш запрос бросает исключение, вы не закроете его своевременно, и он останется висящим, пока коллекционер мусора не заметит его.

Вам нужно приложить объект в using Блок, как показано другими или на минимальном, закажите его в структуре Try/, наконец.

Классы, которые используют ресурсы, которые вам нужны для очистки после этого, обычно внедряют Idisposable интерфейс. Это означает, что он обеспечивает функцию, называемую Dispose (), которая может использоваться для свободных ресурсов.

Для одноразовых объектов вы можете использовать с использованием утверждение:

using ( SomeDisposableClass c = new SomeDisposableClass() ) {

    // ... your code here

} // c.Dispose() automatically called here, freeing up resources

Если класс правильно закодирован, он должен освободить любые ресурсы - будь то подключение к базе данных, открытый дескриптор файла и т. Д. - в его функции ypesose ().

Это означает, что MySQL, вероятно, отключается от базы данных в Dispose (), поэтому вам, вероятно, не нужно явно вызовать C.Close (), но всегда проверять документацию, чтобы быть уверенным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top