CLASSE CONEXAO VB EM FIREBIRD, AJUDA
Amigos estou com um problema, estou precisando portar meu projeto do MySQL para Firebird, gostaria de saber se tem como fazer isso apenas mudando a classe de conexão, abaixo deixo a classe que estou usando se alguém puder adapta-la para mim agradeço, irei usar o firebird com o conector .net, outra duvida é a seguinte, após muito insistir consegui fazer o MySQL instalar em modo Silencioso com o InnoSetup usando o seguinte script:
[Files]
Source: [Ô]C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
Source: [Ô]C:\MySQL5.msi[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
Source: [Ô]MySQL5.msi[Ô]; DestDir: [Ô]{tmp}[Ô]
; NOTE: Don[ô]t use [Ô]Flags: ignoreversion[Ô] on any shared system files
[Icons]
Name: [Ô]{group}\{#MyAppName}[Ô]; Filename: [Ô]{app}\{#MyAppExeName}[Ô]
Name: [Ô]{commondesktop}\{#MyAppName}[Ô]; Filename: [Ô]{app}\{#MyAppExeName}[Ô]; Tasks: desktopicon
[Run]
Filename: [Ô]msiexec.exe[Ô]; Parameters: [Ô]/i {tmp}\MySQL5.msi /passive[Ô]; WorkingDir: {tmp}; StatusMsg: [Ô]Aguarde....instalando drivers de acesso a dados[Ô];
;Filename: [Ô]msiexec.exe[Ô]; Parameters: [Ô]/i [Ô][Ô]{tmp}\MySQL5.msi /quiet[Ô][Ô][Ô]; StatusMsg: [Ô]Instalando MySQL[Ô]
Filename: [Ô]{app}\{#MyAppExeName}[Ô]; Description: [Ô]{cm:LaunchProgram,{#StringChange(MyAppName, [ô]&[ô], [ô]&&[ô])}}[Ô]; Flags: nowait postinstall skipifsilent
Porém após a instalação não consigo acessar a base com o MySQL Front, pois o usuario padrão Root, não entra, oque dá a impressão que o Mysql foi instalado mais não configurado, oque vocês acham? o script está certo? peço desculpas pelas muitas perguntas, abaixo a classe que eu uso de conexão se alguem conseguir me ajudar a adaptar para firebird agradeço , desde já agradeço pela atenção, sou novato aqui nesse site, por isso peço desculpas caso tenha postado no lugar errado ou de maneira errada, mais já uso muito o site para tirar duvidas
Imports MySql.Data.MySqlClient
Public Class Conexao
Dim conn As New MySqlConnection
Dim cmd As MySqlCommand = conn.CreateCommand
Dim ds As New DataSet
Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd)
Public Sub Conectar()
Try
conn.ConnectionString = [Ô]server=localhost;user id=root;password=1234;database=base2.0ca[Ô]
conn.Open()
Catch ex As Exception
End Try
End Sub
Public Sub Operar(ByVal sql As String)
Conectar()
Try
cmd.CommandText = sql
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
End Sub
Public Function ObterValor(ByVal sql As String)
Conectar()
Dim Valor As Double
Try
ds.Tables.Clear()
cmd.CommandText = sql
Valor = cmd.ExecuteScalar()
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
Return Valor
End Function
Public Function Listar(ByVal sql As String)
Conectar()
Try
ds.Clear()
cmd.CommandText = sql
da.Fill(ds)
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
Return ds
End Function
End Class
[Files]
Source: [Ô]C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
Source: [Ô]C:\MySQL5.msi[Ô]; DestDir: [Ô]{app}[Ô]; Flags: ignoreversion
Source: [Ô]MySQL5.msi[Ô]; DestDir: [Ô]{tmp}[Ô]
; NOTE: Don[ô]t use [Ô]Flags: ignoreversion[Ô] on any shared system files
[Icons]
Name: [Ô]{group}\{#MyAppName}[Ô]; Filename: [Ô]{app}\{#MyAppExeName}[Ô]
Name: [Ô]{commondesktop}\{#MyAppName}[Ô]; Filename: [Ô]{app}\{#MyAppExeName}[Ô]; Tasks: desktopicon
[Run]
Filename: [Ô]msiexec.exe[Ô]; Parameters: [Ô]/i {tmp}\MySQL5.msi /passive[Ô]; WorkingDir: {tmp}; StatusMsg: [Ô]Aguarde....instalando drivers de acesso a dados[Ô];
;Filename: [Ô]msiexec.exe[Ô]; Parameters: [Ô]/i [Ô][Ô]{tmp}\MySQL5.msi /quiet[Ô][Ô][Ô]; StatusMsg: [Ô]Instalando MySQL[Ô]
Filename: [Ô]{app}\{#MyAppExeName}[Ô]; Description: [Ô]{cm:LaunchProgram,{#StringChange(MyAppName, [ô]&[ô], [ô]&&[ô])}}[Ô]; Flags: nowait postinstall skipifsilent
Porém após a instalação não consigo acessar a base com o MySQL Front, pois o usuario padrão Root, não entra, oque dá a impressão que o Mysql foi instalado mais não configurado, oque vocês acham? o script está certo? peço desculpas pelas muitas perguntas, abaixo a classe que eu uso de conexão se alguem conseguir me ajudar a adaptar para firebird agradeço , desde já agradeço pela atenção, sou novato aqui nesse site, por isso peço desculpas caso tenha postado no lugar errado ou de maneira errada, mais já uso muito o site para tirar duvidas
Imports MySql.Data.MySqlClient
Public Class Conexao
Dim conn As New MySqlConnection
Dim cmd As MySqlCommand = conn.CreateCommand
Dim ds As New DataSet
Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd)
Public Sub Conectar()
Try
conn.ConnectionString = [Ô]server=localhost;user id=root;password=1234;database=base2.0ca[Ô]
conn.Open()
Catch ex As Exception
End Try
End Sub
Public Sub Operar(ByVal sql As String)
Conectar()
Try
cmd.CommandText = sql
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
End Sub
Public Function ObterValor(ByVal sql As String)
Conectar()
Dim Valor As Double
Try
ds.Tables.Clear()
cmd.CommandText = sql
Valor = cmd.ExecuteScalar()
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
Return Valor
End Function
Public Function Listar(ByVal sql As String)
Conectar()
Try
ds.Clear()
cmd.CommandText = sql
da.Fill(ds)
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
Return ds
End Function
End Class
Resposta curta:
Não basta apenas mudar a classe de conexão, você com certeza usa outros objetos do FB em outras partes do seu projeto(DataReader, Command...). Se você está usando OOP corretamente, então o trabalho vai ser mÃnimo, bastando apenas alterar algumas partes, mas pelo que estou vendo baseado em sua classe de conexão, você vai ter muito trabalho.
Não basta apenas mudar a classe de conexão, você com certeza usa outros objetos do FB em outras partes do seu projeto(DataReader, Command...). Se você está usando OOP corretamente, então o trabalho vai ser mÃnimo, bastando apenas alterar algumas partes, mas pelo que estou vendo baseado em sua classe de conexão, você vai ter muito trabalho.
Hum compreendo, mais tem como adaptar esta classe? Porque dai fica mais fácil para eu fazer as mudanças no resto do projeto...
Sim, basta trocar o que for MySQL para os objetos do FB, incluindo a string de conexão.
Consegui fazer a classe, obrigado amigo, agora só não sei como resolver o problema do mysql em outro projeto como disse ai, que instala no modo silencioso mais não configura o Localhost, o User: Root e senha: vazio, ele instala mais não configura, sera que tem como fazer por código, assim o cliente não precisa fazer nada só instalar...?
A classe ficou assim, quem quiser, testei e funciona: Só precisei mudar umas coisas bem básico em outras classes...
Imports FirebirdSql.Data.FirebirdClient
Public Class Conexao
Dim conn As New FbConnection
Dim myCommand As New FbCommand
Dim myAdapter As New FbDataAdapter
Dim myData As New DataTable
Dim ds As New DataSet
Dim SQL As String
Public Sub conectar()
Try
conn.ConnectionString = [Ô]User=SYSDBA;Password=masterkey;Database=C:\TESTE.fdb;DataSource=localhost;Port=3050;Dialect=3;[Ô]
conn.Open()
Catch ex As Exception
End Try
End Sub
Public Function ObterValor(ByVal sql)
Dim valor As Double
Conectar()
Try
myCommand.Connection = conn
myCommand.CommandText = sql
valor = myCommand.ExecuteScalar()
Catch ex As Exception
Finally
conn.Close()
End Try
Return valor
End Function
Public Sub Operar(ByVal sql As String)
Try
conectar()
myCommand.Connection = conn
myCommand.CommandText = sql
myCommand.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
End Sub
Public Function listar(ByVal sql As String)
Conectar()
Try
ds.Clear()
myCommand.Connection = conn
myCommand.CommandText = sql
myAdapter.SelectCommand = myCommand
myCommand.CommandText = sql
myAdapter.Fill(ds)
Catch ex As Exception
MsgBox(ex.Message & [Ô]Erro no metodo Listar![Ô])
Finally
conn.Close()
End Try
Return ds
End Function
End Class
A classe ficou assim, quem quiser, testei e funciona: Só precisei mudar umas coisas bem básico em outras classes...
Imports FirebirdSql.Data.FirebirdClient
Public Class Conexao
Dim conn As New FbConnection
Dim myCommand As New FbCommand
Dim myAdapter As New FbDataAdapter
Dim myData As New DataTable
Dim ds As New DataSet
Dim SQL As String
Public Sub conectar()
Try
conn.ConnectionString = [Ô]User=SYSDBA;Password=masterkey;Database=C:\TESTE.fdb;DataSource=localhost;Port=3050;Dialect=3;[Ô]
conn.Open()
Catch ex As Exception
End Try
End Sub
Public Function ObterValor(ByVal sql)
Dim valor As Double
Conectar()
Try
myCommand.Connection = conn
myCommand.CommandText = sql
valor = myCommand.ExecuteScalar()
Catch ex As Exception
Finally
conn.Close()
End Try
Return valor
End Function
Public Sub Operar(ByVal sql As String)
Try
conectar()
myCommand.Connection = conn
myCommand.CommandText = sql
myCommand.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
End Sub
Public Function listar(ByVal sql As String)
Conectar()
Try
ds.Clear()
myCommand.Connection = conn
myCommand.CommandText = sql
myAdapter.SelectCommand = myCommand
myCommand.CommandText = sql
myAdapter.Fill(ds)
Catch ex As Exception
MsgBox(ex.Message & [Ô]Erro no metodo Listar![Ô])
Finally
conn.Close()
End Try
Return ds
End Function
End Class
A primeira coisa é fazer a sua connectionstring, ser buscada dinamicamente, não estar fixa no código. Faça uma classe, um método, grave no app.config, mas não deixe assim.
Como assim amigo? Poderia me explicar caso tivesse um exemplo e der me manda no email: c_o_junior@hotmail.com desde já agradecido, pois ainda estou aprendendo algumas coisas rsrs
Faça seu login para responder