ERRO NA ABERTURA DA CONEXÃO DA BASE DE DADOS

 Tópico anterior Próximo tópico Novo tópico

ERRO NA ABERTURA DA CONEXÃO DA BASE DE DADOS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#475632 - 07/08/2017 04:26:38

MOREIRA
SAO LUIS - TURU
Cadast. em:Agosto/2004


Última edição em 07/08/2017 04:29:04 por MOREIRA

Bom dia,
ao realizar uma query, retorna o erro "não há conexão"
Additional information: Connection must be valid and open.

porem, apenas ao tentar usar o using
Using conexao As FbConnection = ConectarBD()
            Dim sCmd As FbCommand
            Dim sql As String
            Dim ds As FbDataReader
            sql = "SELECT LOGIN_USER FROM TBLOGIN"

            sCmd = New FbCommand()
            sCmd.Connection = conexao
            sCmd.CommandText = sql
            ds = sCmd.ExecuteReader
            While (ds.Read)
                MsgBox(ds.Item("LOGIN_USER"))
            End While

        End Using  


segue a conexão com o banco
A conexão com o banco de dados funcionando certinho

  Public strConexao As FbConnection

    Public Function ConectarBD() As FbConnection

        Dim SB As New FbConnectionStringBuilder()
        SB.Database = "D:\LUNOS\SCI\bin\Debug\BDADOS.FDB"
        SB.UserID = "SYSDBA"
        SB.Password = "masterkey"
        SB.Dialect = 3
        SB.Port = 3050
        SB.DataSource = "192.168.0.20"
        strConexao = New FbConnection(SB.ToString())

        Try
            If strConexao.State = ConnectionState.Closed Then
                Cursor.Current = Cursors.WaitCursor
                strConexao.Open()
                Cursor.Current = Cursors.Default
            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu um erro ao Estabelecer a Comunicação com o Banco de Dados, por favor verifique se todas as configurações" & "foram informadas corretamente!", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try

        Return New FbConnection(SB.ToString)

    End Function




Eu não nasci, fui Compilado

#475633 - 07/08/2017 08:05:54

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Você esqueceu de chamar o método Open do objeto de conexão.

"Cansei de frases intelectuais" - Eu mesmo


Resposta escolhida #475634 - 07/08/2017 08:52:04

MARCELOKROL
REBOUCAS
Cadast. em:Julho/2004


Bom se vai usar do modo apresentado acima mude essa função para:
  
    Public Function ConectarBD() As FbConnection
        Dim SB As New FbConnectionStringBuilder()
        SB.Database = "D:\LUNOS\SCI\bin\Debug\BDADOS.FDB"
        SB.UserID = "SYSDBA"
        SB.Password = "masterkey"
        SB.Dialect = 3
        SB.Port = 3050
        SB.DataSource = "192.168.0.20"
        dim strConexao = New FbConnection(SB.ToString())

        Try
            If strConexao.State = ConnectionState.Closed Then
                Cursor.Current = Cursors.WaitCursor
                strConexao.Open()
                Cursor.Current = Cursors.Default
            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu um erro ao Estabelecer a Comunicação com o Banco de Dados, por favor verifique se todas as configurações" & "foram informadas corretamente!", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try

        Return strConexao

    End Function


Obs. Não testei digitei direto no browser



#475635 - 07/08/2017 09:18:56

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
O que essa mensagem diz é que a conexão deve estar válida e aberta. Sugiro tentar entender o que está fazendo e não simplesmente copiar e colar código.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#475636 - 07/08/2017 09:33:56

MOREIRA
SAO LUIS - TURU
Cadast. em:Agosto/2004


Última edição em 07/08/2017 09:36:45 por MOREIRA

 Anexos estao visíveis somente para usuários registrados

Citação:
:
Bom se vai usar do modo apresentado acima mude essa função para:
  
    Public Function ConectarBD() As FbConnection
        Dim SB As New FbConnectionStringBuilder()
        SB.Database = "D:LUNOSSCIinDebugBDADOS.FDB"
        SB.UserID = "SYSDBA"
        SB.Password = "masterkey"
        SB.Dialect = 3
        SB.Port = 3050
        SB.DataSource = "192.168.0.20"
        dim strConexao = New FbConnection(SB.ToString())

        Try
            If strConexao.State = ConnectionState.Closed Then
                Cursor.Current = Cursors.WaitCursor
                strConexao.Open()
                Cursor.Current = Cursors.Default
            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu um erro ao Estabelecer a Comunicação com o Banco de Dados, por favor verifique se todas as configurações" & "foram informadas corretamente!", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try

        Return strConexao

    End Function


Obs. Não testei digitei direto no browser


assim não deveria funcionar. ?

retorna erro, imagem em anexo.

  Public strConexao As FbConnection

    Public Function ConectarBD() As FbConnection

        Dim SB As New FbConnectionStringBuilder()
        SB.Database = "D:\LUNOS\SCI\bin\Debug\BDADOS.FDB"
        SB.UserID = "SYSDBA"
        SB.Password = "masterkey"
        SB.Dialect = 3
        SB.Port = 3050
        SB.DataSource = "192.168.0.20"
        strConexao = New FbConnection(SB.ToString())      'OBS: strConexao  coloquei como public  -  desculpa se estiver errado.

        Try
            If strConexao.State = ConnectionState.Closed Then
                Cursor.Current = Cursors.WaitCursor
                strConexao.Open()
                Cursor.Current = Cursors.Default
            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu um erro ao Estabelecer a Comunicação com o Banco de Dados, por favor verifique se todas as configurações" & "foram informadas corretamente!", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
        Return New FbConnection()

    End Function


Eu não nasci, fui Compilado

#475637 - 07/08/2017 09:40:05

MARCELOKROL
REBOUCAS
Cadast. em:Julho/2004


mude a linha:
   dim strConexao = New FbConnection(SB.ToString())

para:
  dim strConexao as New FbConnection(SB.ToString())


Mas como o amigo KERPLUNK citou: procure entender o funcionamento da coisa, pois um CTRL+C e CTRL+V nao resolve problemas, so multiplica eles, sendo agora ou no futuro.



#475638 - 07/08/2017 09:44:07

MOREIRA
SAO LUIS - TURU
Cadast. em:Agosto/2004


Citação:
:
O que essa mensagem diz é que a conexão deve estar válida e aberta. Sugiro tentar entender o que está fazendo e não simplesmente copiar e colar código.


O propósito é esse, entender como funciona a receita do bolo. e não simplesmente comer e encher o bucho.
por outro lado, perguntando que se aprende.  





Eu não nasci, fui Compilado

#475639 - 07/08/2017 11:12:12

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Citação:
:
:
O que essa mensagem diz é que a conexão deve estar válida e aberta. Sugiro tentar entender o que está fazendo e não simplesmente copiar e colar código.

O propósito é esse, entender como funciona a receita do bolo. e não simplesmente comer e encher o bucho.
por outro lado, perguntando que se aprende.  




Ok, você entende o que está acontecendo nesse código que você postou?

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#475640 - 07/08/2017 11:45:54

MOREIRA
SAO LUIS - TURU
Cadast. em:Agosto/2004


Última edição em 07/08/2017 11:47:08 por MOREIRA

Citação:
:
:
:
O que essa mensagem diz é que a conexão deve estar válida e aberta. Sugiro tentar entender o que está fazendo e não simplesmente copiar e colar código.

O propósito é esse, entender como funciona a receita do bolo. e não simplesmente comer e encher o bucho.
por outro lado, perguntando que se aprende.  




Ok, você entende o que está acontecendo nesse código que você postou?


bom vamos ao teste,

Armazena os "PARÂMETROS" da conexão
  Dim SB As New FbConnectionStringBuilder()
        SB.Database = "D:\LUNOS\SCI\bin\Debug\BDADOS.FDB"
        SB.UserID = "SYSDBA"
        SB.Password = "masterkey"
        SB.Dialect = 3
        SB.Port = 3050
        SB.DataSource = "192.168.0.20"



Recebe o caminho dos paramentros "base de dados"
  Dim strConexao As New FbConnection(SB.ToString())


!º é o segredo da coisa, onde ainda não entendi.. deveria receber a conexão como realizada.
  Return New FbConnection(strConexao.ToString)


2º Ao abrir a conexão em outro formulário. informa que a conexão não é válida.
Private Sub btn_entrar_Click(sender As Object, e As EventArgs) Handles btn_entrar.Click

        Dim dr As FbDataReader
        Using con As FbConnection = GetConnection()
    
            ---> aqui seria pra abrir a con.open

            Dim sql As String = "SELECT LOGIN_USER FROM TBLOGIN"
            Dim cmd As New FbCommand(sql, con)
            cmd.CommandText = sql
            dr = cmd.ExecuteReader

            While (dr.Read)
                MsgBox(dr.Item("LOGIN_USER"))
            End While

        End Using
    End Sub  


se estiver errado, por favor, desconsidere !!


Eu não nasci, fui Compilado

#475642 - 07/08/2017 12:48:50

MARCELOKROL
REBOUCAS
Cadast. em:Julho/2004


Então...
  Public Function ConectarBD() As FbConnection

é uma function, e sendo função deve retornar alguma coisa, nesse caso ela retorna um FbConnection

  Return New FbConnection(strConexao.ToString)

Se você retornar desse modo estará retornado uma FbConnection com a string de conexão dentro, mais nada, e não seria necessário realizar a abertura do banco de dados:
   If strConexao.State = ConnectionState.Closed Then
                Cursor.Current = Cursors.WaitCursor
                strConexao.Open()
                Cursor.Current = Cursors.Default
            End If


Mas se voce retornar:
  Return strConexao

Ai sim, estará retornando a conexão aberta e já pronta para usar.

outra coisa:
  Dim strConexao As New FbConnection(SB.ToString())

Aqui voce declara a variavel conexão e ja informa pra ela a string de conexão que será utilizada que, nesse caso pode ser declarada dentro da função, pois como ja citei acima, será retornado na função, inviabilizando manter uma variável publica.

  ---> aqui seria pra abrir a con.open

não precisa abrir ela, pois a função já faz isso pra voce.

espero ter ajudado e ter sido claro.



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por MOREIRA em 15/08/2017 13:04:47