MarKteus 1 Denunciar post Postado Fevereiro 20, 2015 Boa noite Vejo por aí várias forma de se conectar com banco de dados, então gostaria de saber qual a forma mais correta de se conectar a um banco de dados ? Quais os melhores passos a seguir no momento da realização a abertura da conexão, qual o local mais ideal pra ser deixar uma classe de conexão bando dentro do projeto ? Que métodos usar ? O que uma classe de conexão deve fazer ou conter para abrir uma conexão ou fechar de forma mais eficaz possível ? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Dan Borges 26 Denunciar post Postado Fevereiro 20, 2015 Bem, você pode criar uma classe chamada "Gerenciador". Nela você irá inserir os métodos de Conectar e desconectar. Por exemplo: SqlConnection conn = new SqlConnection(stringDeConexao); private bool conectar() { try { if(conn.State != ConnectionState.Open) conn.Open(); } catch { return false; } return true; } private bool desconectar() { try { if(conn.State != ConnectionState.Closed) { conn.Close(); conn.Dispose; } } catch { return false; } return true; } Antes de você chamar um método, por exemplo, de execução de uma instrução SQL, você pode verificar se o a conexão está aberta e no final do método fechá-la. public bool ExecutarComando(string sql, List<SqlParamater> parametros) { if(!conectar()) return false; //... } É desse jeito que faço, mas realmente podem existir várias soluções, procure o que for mais viável para o seu projeto. Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Fevereiro 20, 2015 Cara uma conexão é um negócio simples. Basicamente ela abre e fecha, você tem que tomar cuidado para só não deixar ela sempre aberta. Uma classe eficiente de verdade provavelmente teria um timeout interno que iria fechar a conexão sempre que atingisse determinado tempo. Ou então fechar uma conexão já existente antes de abrir outra. Isso que o Dan disse basicamente resume tudo. Compartilhar este post Link para o post Compartilhar em outros sites
MarKteus 1 Denunciar post Postado Fevereiro 20, 2015 Ok.Mas por exemplo certa vez uma conexão com o banco ser fechada assim: dtbRetorno.Load(CMD.ExecuteReader((CommandBehavior.CloseConnection))); Qual a vantagem ou desvantagem em relação ao modo if(conn.State != ConnectionState.Closed) { conn.Close(); conn.Dispose; } Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Fevereiro 23, 2015 Ambos são iguais, a diferença é que em um você fecha a conexão via comando e a outra manualmente. Compartilhar este post Link para o post Compartilhar em outros sites
Dan Borges 26 Denunciar post Postado Fevereiro 23, 2015 Isso. Pelo que li na documentação da MSDN, sobre o CommandBehavior.CloseConnection, se vc utilizar um DataReader, ele é fechado automaticamente. Compartilhar este post Link para o post Compartilhar em outros sites
MarKteus 1 Denunciar post Postado Fevereiro 23, 2015 Isso. Pelo que li na documentação da MSDN, sobre o CommandBehavior.CloseConnection, se você utilizar um DataReader, ele é fechado automaticamente. Dan, Então o uso do commandBehavior é recomendado sempre para operar em conjunto com um DataReader(), ou só funciona quando se é usado um DataReader() para leitura de dados ? Ambos são iguais, a diferença é que em um você fecha a conexão via comando e a outra manualmente. Khaos, existe vantagens de um sobre o outro ? Compartilhar este post Link para o post Compartilhar em outros sites
Dan Borges 26 Denunciar post Postado Fevereiro 23, 2015 Não sei MarKteus, nunca usei esse comando, mas creio que seja em conjunto com o DataReader, dê uma conferida: https://msdn.microsoft.com/pt-br/library/system.data.commandbehavior%28v=vs.110%29.aspx https://msdn.microsoft.com/en-us/library/aa326246%28v=vs.71%29.aspx Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Fevereiro 24, 2015 Dan, Então o uso do commandBehavior é recomendado sempre para operar em conjunto com um DataReader(), ou só funciona quando se é usado um DataReader() para leitura de dados ? Khaos, existe vantagens de um sobre o outro ? A vantagem é a mesma de usar o Using, ele evita de que a conexão fique aberta e acumule memória. Compartilhar este post Link para o post Compartilhar em outros sites