CONEXAO FIREBIRD

MOREIRA 04/03/2017 01:34:20
#472109
Bom dia a Todos, achei esse código na net, conexão com firebird

porem, funciona tudo em um formulário

gostaria da ajuda dos amigos, preciso fazer uma unica conexão, ou seja, em um módulo,

e abrir e fechar quando precisar nos insert, update, select... etc....

quem poder ajudar, qual seria a melhor prática nesse caso,

abrigado a todos..





  Module Module1
Dim conexao As FbConnection
Dim stringconexao As New FbConnectionStringBuilder

Private Sub PreparaConexao()
stringconexao.ServerType = FbServerType.Default
stringconexao.DataSource = [Ô]172.0.0.1[Ô]
stringconexao.UserID = [Ô]SYSDBA[Ô]
stringconexao.Port = 3050
stringconexao.Password = [Ô]masterkey[Ô]
stringconexao.Dialect = 3
stringconexao.Database = [Ô]LOCALBASEDADOS .FDB[Ô]
stringconexao.Pooling = False
End Sub

Private Sub AbreConexao()
conexao.ConnectionString = stringconexao.ToString
conexao.Open()
End Sub

Private Sub FechaConexao()
conexao.Close()
End Sub
End Module

PROFESSOR 04/03/2017 17:10:01
#472134
Passo 1: Crie uma classe com as funções necessárias.
Por exemplo Consulta, Incluir, Alterar, Excluir. Essas funções podem receber as instruções SQL, executá-las e devolver o resultado.
Passo 2: Nos seus formulários, chame as funções dessa classe, ao invés de criar um novo conector.

Com o tempo, você pode ir aprimorando essa mesma classe para receber parâmetros, para trabalhar com Stored Procedures, para efetuar operações de manutenção do próprio banco de dados, dentre outras.

Você começou com o pé direito, ou seja, já copiou o [Ô]pontapé inicial[Ô], que é a chave da coisa toda. Agora, com base nesse código, poderá desenvolver o que mais venha á ser necessário para a sua aplicação. Aconselho á fazer manualmente você mesmo, para que possa entender o que está acontecendo.
DS2T 04/03/2017 17:12:21
#472135
Melhor forma, seria criar uma classe especializada para isso, ao invés de um módulo.
Deixe todos os métodos encapsulados nessa classe.

Uma classe bem simples nesses moldes, teria os seguintes métodos:

ExecutaComando(comando as string)
RetornaDataTable(select as string)
RetornaEscalar(select as string)


Toda vez que algum desses métodos fosse chamado, você faria a conexão, executaria e fecharia ele.
A variável de conexão poderia ser local mesmo, aí você usaria o Dispose toda vez depois que ela fosse usada.

Abraços!
MOREIRA 05/03/2017 22:07:40
#472193
Amigos, boa noite,

conforme indicação, coloquei a conexão com o bd, via class,

  Imports FirebirdSql
Imports FirebirdSql.Data
Imports FirebirdSql.Data.FirebirdClient

Public Class ClassCnn
Public conexao As FbConnection
Public stringconexao As New FbConnectionStringBuilder

Private Sub PreparaConexao()
stringconexao.ServerType = FbServerType.Default
stringconexao.DataSource = [Ô]172.0.0.1[Ô]
stringconexao.UserID = [Ô]SYSDBA[Ô]
stringconexao.Port = 3050
stringconexao.Password = [Ô]masterkey[Ô]
stringconexao.Dialect = 3
stringconexao.Database = [Ô]LOCALBASEDADOS .FDB[Ô]
stringconexao.Pooling = False
End Sub

Private Sub AbreConexao()
conexao.ConnectionString = stringconexao.ToString
conexao.Open()
End Sub

Private Sub FechaConexao()
conexao.Close()
End Sub
End Class


agora no form, como faço para abrir e fechar a cada insert ?

MOREIRA 06/03/2017 12:10:18
#472210
Bom dia, pessoal, algum amigo tem alguma ajuda como posso fazer iniciar o insert no form chamando a abertura do banco de dados pela class acima ?


Por exemplo, fazendo um login e validando.
DAMASCENO.CESAR 06/03/2017 16:21:18
#472222
Não crie subs, crie functions, elas retornam algo, e, se você criar como private, só poderá ser usada na classe. então crie public functions
um exemplo
Private Function PreparaConexao() as FbConnectionStringBuilder
stringconexao.ServerType = FbServerType.Default
stringconexao.DataSource = [Ô]172.0.0.1[Ô]
stringconexao.UserID = [Ô]SYSDBA[Ô]
stringconexao.Port = 3050
stringconexao.Password = [Ô]masterkey[Ô]
stringconexao.Dialect = 3
stringconexao.Database = [Ô]LOCALBASEDADOS .FDB[Ô]
stringconexao.Pooling = False
return stringconexao
End Function

MOREIRA 06/03/2017 18:01:08
#472227
sim, verdades, eu já havia corrigido...

eu preciso entender e se como esta aqui pode ficar assim, ou tem coisas inúteis,
entender


e claro, como devo chamar lá no formulário, por exemplo, em um insert ou simplesmente uma query de login

  Imports FirebirdSql
Imports FirebirdSql.Data
Imports FirebirdSql.Data.FirebirdClient

Public Class ClassCnn
Public Conexao As FbConnection
Public Stringconexao As New FbConnectionStringBuilder

Public Sub PreparaConexao()
stringconexao.ServerType = FbServerType.Default
stringconexao.DataSource = [Ô]172.0.0.1[Ô]
stringconexao.UserID = [Ô]SYSDBA[Ô]
stringconexao.Port = 3050
stringconexao.Password = [Ô]masterkey[Ô]
stringconexao.Dialect = 3
stringconexao.Database = [Ô]LOCALBASEDADOS .FDB[Ô]
stringconexao.Pooling = False
End Sub

Public Sub AbreConexao()
Conexao.ConnectionString = Stringconexao.ToString
Conexao.Open()
End Sub

Public Sub FechaConexao()
Conexao.Close()
End Sub
End Class
MOREIRA 07/03/2017 14:01:46
#472244
Ninguém... ?
DS2T 07/03/2017 16:14:31
#472245
Tenta algo assim:



private function RetornaStringConexao() AS String
dim Stringconexao As New FbConnectionStringBuilder

stringconexao.ServerType = FbServerType.Default
stringconexao.DataSource = [Ô]172.0.0.1[Ô]
stringconexao.UserID = [Ô]SYSDBA[Ô]
stringconexao.Port = 3050
stringconexao.Password = [Ô]masterkey[Ô]
stringconexao.Dialect = 3
stringconexao.Database = [Ô]LOCALBASEDADOS .FDB[Ô]
stringconexao.Pooling = False

return stringconexao.tostring()
End function

private function RetornaConexaoAberta() AS FbConnection
dim Conexao As new FbConnection
Conexao.ConnectionString = RetornaStringConexao()
Conexao.Open()
return conexao
End function


public function ExecutaComando(sql as string) as integer
dim retorno as integer
using con as fbConnection = retornaConexaoAberta()
using comando as new fbCommand(sql, con)
retorno = comando.executenonquery()
end using
con.close()
end using
end function

End Class


Digitei no bloco de notas, então pode ter tido digitação ou síntaxe errada (porque tava mexendo num c# agora, aí tem a memória muscular .. rs)

Mas a ideia é essa.
RICARDOCENTENO 09/03/2017 13:22:02
#472324
Resposta escolhida
é sempre bom colocar dentro das funções o try...catch para uma melhor depuração do problema caso ocorrer.
MOREIRA 09/03/2017 13:39:04
#472325
Pessoal, ainda sem entender abrir e fechar a conexão no formulário.

Exemplo, ao abri e fechar uma query..
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas