ERRO NA ABERTURA DA CONEXÃO DA BASE DE DADOS
ao realizar uma query, retorna o erro [Ô]não há conexão[Ô]
[txt-color=#e80000]Additional information: Connection must be valid and open.[/txt-color]
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
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
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
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.
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.
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?
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 !!
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.