Feche um tópico contra um banco de dados MySQL em C#
-
20-09-2019 - |
Pergunta
Qual é a maneira correta de fechar um piso depois de executar uma consulta contra um banco de dados MySQL de um formulário do Windows em C#?
Um simples aberto é próximo o suficiente assim?
conn.Open();
//querycode
conn.Close():
Solução
Tente usar:
using(MySqlConnection conn = new MySqlConnection(connString))
{
conn.Open();
} // conn is automatically closed and disposed at the end of the using block
Outras dicas
está tudo bem do jeito que você está fazendo, você também pode envolver o objeto de conexão em using
Bloco como este:
using (var con = new MySqlConnection(/*connection string*/))
{
con.Open();
//do stuff
// con.Close(); //don't need this it will be closed automatically*
}
(*Vejo)
Não, o código em sua pergunta não é bom o suficiente. Se sua consulta lançar uma exceção, você não fechará () em tempo hábil e ficará pendurado até que o coletor de lixo a perceba.
Você precisa incluir o objeto em um using
Bloqueie como mostrado por outros ou em um mínimo de encaixe no mínimo em uma estrutura de tentativa/finalmente.
As classes que usam recursos que você precisa para limpar depois geralmente implementam o Idisposlável interface. Isso significa que ele fornece uma função chamada Dispon () que pode ser usada para recursos gratuitos.
Para objetos descartáveis, você pode usar o usando declaração:
using ( SomeDisposableClass c = new SomeDisposableClass() ) {
// ... your code here
} // c.Dispose() automatically called here, freeing up resources
Se a classe estiver codificada corretamente, deve liberar quaisquer recursos - seja uma conexão de banco de dados, uma alça de arquivo aberta, etc - em sua função dispete ().
Isso significa que o MySQL provavelmente se desconecta do banco de dados em Dispon (), então você provavelmente não precisa ligar explicitamente C.Close () - mas sempre verifique a documentação para ter certeza.