• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Baia

Conexão à base de dados mysql com uso de classes

10 mensagens neste tópico

Ola a todos. Eu estou a aprender  a programar em VB.NET e tenho uma duvida.

Estou a fazer um projecto que faz ligações a uma base de dados mysql.

Já tenho a conexão a funcionar e a fazer tudo direitinho só que tenho que fazer sempre a conexao em cada vez que quero executar uma query para a bd.

O que eu queria era fazer a conexão numa classe e depois era só chamá-la, será que alguem me poderia ajudar?

Aqui está o codigo que tenho a funcionar.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim conexao As OdbcConnection
        Dim dr As OdbcDataReader
        Dim sql As String = "create database teste"
        Dim strsql As String

        strsql = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;uid=root;pwd=;"
       
        conexao = New OdbcConnection(strsql)
        conexao.Open()

        Dim cmd As OdbcCommand = New OdbcCommand(sql, conexao)

        Try
            dr = cmd.ExecuteReader() 

        Catch ex As Exception
            MsgBox(ex, MsgBoxStyle.Information)

        End Try
      
        conexao.Close()
        conexao = Nothing
    End Sub

Obrgigado a todos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes usar uma classe com  métodos tipo

construtor

connect

disconnect

isConnected

executeSQL

etc.

e passas o código que tens para os métodos correspondentes.

Uma classe desse tipo provavelmente faz sentido ser singleton.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Perdes uns 15 minutinhos a analisar o código desta biblioteca e ficas com umas ideias de como podes fazer uma biblioteca com as tuas necessidades.

Não senti grande necessidade em aplicar patterns como o singleton.

Está contruída de uma forma simples, fácil de analisar.

Uma pessoa está sempre a aprender, hoje já faria diferente do que tenho lá, ainda assim, um exemplo desses já te mete "on track".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ribeiro55, não implementaste o singleton na tua biblioteca e na minha opinião isso está correcto.

Quem utiliza a tua biblioteca é q deve decidir se usa apenas uma instancia ou não. É uma decisão que cabe ao programador.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ribeiro55, não implementaste o singleton na tua biblioteca e na minha opinião isso está correcto.

Quem utiliza a tua biblioteca é q deve decidir se usa apenas uma instancia ou não. É uma decisão que cabe ao programador.

Permite-se discordar. O singleton não é uma decisão de programação mas sim de desenho, pelo que a decisão é do arquitecto, de quem desenha o sistema, e não do programador.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

M6, tens razão ao dizer que a decisão é uma decisão de desenho.

O que eu quis dizer, é que a biblioteca em si não se deve preocupar com o singleton.

Isso deve ser uma preocupação de quem usa a biblioteca.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora que olho melhor, se calhar fazia sentido aplicar essa pattern.

Não faria se fosse uma classe como a que têm em cima pois poderia ter necessidade de utilizar outra instância para outra base de dados, ao mesmo tempo.

Mas como a filosofia do DataGate é precisamente essa, se calhar fazia algum sentido.

Também não há stress. A source está disponível e o singleton é uma pattern bastante fácil de implementar.

A traços largos basta proteger o construtor e passar a devolver uma instância de si através de uma propriedade.

@Baia

Assim que tiveres novidades ou tiveres esbarrado em algum problema, estamos offtopic mas ainda estamos cá :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No meu ver devias usar MySql.Data.DLL que podes tirar da net é um bocadinho mais facil de usar....penso eu de que....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema dele é precisamente ter que repetir aquele lixo todo por cada vez que quer consultar a base de dados.

A DLL é o connector e tem de ser obviamente usado em alternativa ao driver, tal como o DataGate o usa internamente, e é por isso que ele vem atrelado.

Se construír uma classe que exponha tudo o que precisa, só precisa de fazer as coisas uma vez e depois fazes consultas com tanta facilidade como  Instancia.Executa("SELECT * FROM qqtabela")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, eu criei uma DLL que simplifica as funções é pena que ainda está em fase de desenvolvimento......

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora