Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarKteus

Qual a maneira mais adequada de abrir e fechar conexões com banco

Recommended Posts

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

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

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

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

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

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,

 

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.