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():
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top