Jump to content

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


Baia
 Share

Recommended Posts

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.

Link to comment
Share on other 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.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other 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".

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other 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.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other 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.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other 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á 😛

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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")

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.