FECHAR CONEXAO.

LCSSP 17/02/2014 08:46:10
#434885
Bom dia pessoal,

Estou iniciando os meus primeiros passos no .net e me deparei com um problema ao tentar criar uma função para conectar no banco de dados, não estou conseguindo fechar a conexão.

Public Function my_rec(ByVal sql As String) As MySqlDataReader
Dim cnn As MySqlConnection
Dim cmd As MySqlCommand
Dim rs As MySqlDataReader

cnn = New MySqlConnection([Ô]server=[Ô] & Processador.server & [Ô];user id=[Ô] & Processador.user & [Ô];password=[Ô] & Processador.sen & [Ô];database=[Ô] & Processador.database)
cnn.Open()

cmd = New MySqlCommand(sql, cnn)
rs = cmd.ExecuteReader()
rs.Read()

Return rs

rs.Close()
cnn.Close()

End Function

Após o return ele não processa as demais informações.

Obrigado
LUIS.HERRERA 17/02/2014 09:23:09
#434890
Eu faço assim em C#, apesar da linguagem é fácil você adaptar ao VB.

public static void FecharConexao()
{
if ((cn.State == ConnectionState.Open) || (cn != null)) // detecta se conexão não existe, se existir fecha
{
try
{
cn.Close();
cn.Dispose();
}
catch (SqlException ex)
{
throw;
}
catch (Exception ex)
{
throw;
}
}
}
KERPLUNK 17/02/2014 10:25:28
#434899
Use blocos [Ô]using[Ô] que não terá problemas:

Using cn As New MySqlConnection([Ô]minha string[Ô])
Using cmd As New MySqlCommand([Ô]comando sql[Ô], cn)
[ô]seu código
End Using
End Using
LCSSP 17/02/2014 11:26:42
#434902
Olá Kerplunk,

Fiz usando os blocos, porem ele não apresenta erro mas também, não retorna o datareader.

ROBIU 17/02/2014 13:02:33
#434905
Você precisa mudar a estrutura da sua função. Cria uma function AbrirConexão e outra FecharConexão. então você abre a conexão, faz uma variedade de operações com o banco de dados e fecha a conexão. Da forma que está, sua função só terá uma utilidade.
Veja o projeto que postei neste tópico
Faça seu login para responder