Закрыть поток для базы данных MySQL в C # - PullRequest
0 голосов
/ 08 октября 2009

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

Достаточно ли просто открытое закрытие, как это?

conn.Open();

//querycode

conn.Close():

Ответы [ 4 ]

3 голосов
/ 08 октября 2009

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

using(MySqlConnection conn = new MySqlConnection(connString))
{
    conn.Open();
} // conn is automatically closed and disposed at the end of the using block
0 голосов
/ 08 октября 2009

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

Вам необходимо заключить объект в блок using, как показано другими, или, как минимум, заключить его в структуру try / finally.

0 голосов
/ 08 октября 2009

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

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

(* см )

0 голосов
/ 08 октября 2009

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

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

using ( SomeDisposableClass c = new SomeDisposableClass() ) {

    // ... your code here

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

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

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

...