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

oliveira99

conectar a Mysql e Inserir

12 mensagens neste tópico

Boas, aqui estou eu novamente para uma questão!

Eu estava a fazer um software no visual BASIC 6 que fazia ligação á base dados em Mysql, que se encontrava num servidor! Depois de o ter concluído, decidi modifica-lo e faze-lo no vb 2008,  pois este tem mais funções, como vocês sabem.. Só que eu já pesquisei, vi tutorais, vi aqui no forum e tudo só que não encontrei forma de fazer a ligação a base de dados através do vb 2008!

Alguém tem alguma ideia como posso fazer a ligação á base de dados, como o fazia no vb6??

Obrigado!

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

fazes assim:

Imports System.Data.SqlClient

Imports System.Text

Imports System.Threading

Public Class SQL

Private Sub SQL_Conn

Dim conDatabase As SqlConnection = New SqlConnection("Data [serivor]\SQLEXPRESS;Database=[base de Dados];User=[teu user];Password=[e a tua password]")

            conDatabase.Open() 'Abres a ligação

Dim cmdDatabase As SqlCommand = New SqlCommand("SELECT ref," & _

            "design, stock FROM dbo.st WHERE design LIKE '%" & TextBox1.Text & "%' ORDER BY ref", conDatabase)

em cima tens uma forma de fazer querys..

========= MODIFICADO=====================

Desculpa lá, tava a fazer confusão com o SQL..

algures no site http://dev.mysql.com/downloads/ tens lá o pacote SDK, instalas e ficas logo com as libs pro VS2008

cmps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

fazes assim:

Imports System.Data.SqlClient

Imports System.Text

Imports System.Threading

Public Class SQL

Private Sub SQL_Conn

Dim conDatabase As SqlConnection = New SqlConnection("Data [serivor]\SQLEXPRESS;Database=[base de Dados];User=[teu user];Password=[e a tua password]")

            conDatabase.Open() 'Abres a ligação

Dim cmdDatabase As SqlCommand = New SqlCommand("SELECT ref," & _

            "design, stock FROM dbo.st WHERE design LIKE '%" & TextBox1.Text & "%' ORDER BY ref", conDatabase)

em cima tens uma forma de fazer querys..

========= MODIFICADO=====================

Desculpa lá, tava a fazer confusão com o SQL..

algures no site http://dev.mysql.com/downloads/ tens lá o pacote SDK, instalas e ficas logo com as libs pro VS2008

cmps

Boas!

Obrigado pela resposta!

Já coloquei tudo como disseste!.. Sabes como posso colocar a aparecer os dados num datagrid por exemplo para verificar se está a funcionar correctamente?

Peço desculpa pelas várias questões, mas eu estava tão habituado ao Vb6 e mudei para o vb2008 que tem algumas diferenças!

cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

jovem so para ver se ta a funcionar, quado fazes conDatabase.Open(), e nao da erro, foi pk a ligação é bem sussedida.

eu nao percebo muito bem de dara grids, mas faz antes com uma listview...

  Dim sdr As SqlDataReader = cmdDatabase.ExecuteReader

            If sdr.HasRows Then

                While sdr.Read

                    Dim lvi As New ListViewItem(sdr.GetString(0))

                    lv.Items.Add(lvi)

                    End While

            Else

                Label2.Text = "Sem Dados"

            End If

            conDatabase.Close()

cmps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem criei o list view e quando executo dá-me este um erro na seguinte linha de código:

Dim conDatabase As SqlConnection = New SqlConnection("Data [192.168.2.111]\SQLEXPRESS;Database=[gestao];User=[administrador];Password=[123#]")

Tenho alguma coisa errada? O ip é do servidor onde se encontra a base de dados!

Alguma opinião?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

looooooooooool

New SqlConnection("Data Source=[192.168.2.111] ' enganei-me é pouco, desculpa.

em relação aos [] era só para identificares os campos, mais nada.. vou escrever com os teus dados

New SqlConnection("Data Source=192.168.2.111\SQLEXPRESS;Database=gestao;User=administrador;Password=123")

tenta assim, desculpa o meu engano..

========= MODIFICADO ==========

Troca o endereço de IP pelo nome de computador, visto que tas numa rede local..

verifica se o servidor ta configurado para aceitas ligações remotas..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O SqlConnection é para o MS Sql Server.

Para o MySql tens de fazer referência ao connector correspondente que podes fazer o download a partir site deles e ficará assim: New MySqlConnection

Em relação à connection string também está incorrecta pois essa é novamente para o MS Sql Server (aqui encontra a que procuras http://www.connectionstrings.com).

Outra alternativa é utilizares um ORM independente da BD tal como este  :biggrin::

http://entityorm.uuuq.com

http://www.portugal-a-programar.pt/index.php?showtopic=

E será só definires que queres utilizar o driver MySql, a connection string e depois o resultado da consulta directamente para o DataSource da grid  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O SqlConnection é para o MS Sql Server.

Para o MySql tens de fazer referência ao connector correspondente que podes fazer o download a partir site deles e ficará assim: New MySqlConnection

Em relação à connection string também está incorrecta pois essa é novamente para o MS Sql Server (aqui encontra a que procuras http://www.connectionstrings.com).

Outra alternativa é utilizares um ORM independente da BD tal como este  :biggrin::

http://entityorm.uuuq.com

http://www.portugal-a-programar.pt/index.php?showtopic=

E será só definires que queres utilizar o driver MySql, a connection string e depois o resultado da consulta directamente para o DataSource da grid  ;)

Bem já consegui...  utilizei a primeira opção....

Obrigado a todos pela ajuda!

Entretanto qualquer duvida comunico!

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

Alguém sabe como posso fazer para ir buscar dados a uma tabela da base de dados, que se encontra no servidor e colocar os valores na textbox´s ?!? A tabela tem apenas um linha de dados guardados, que são as configurações da ligação ao servidor (ip servidor, nome BD, user,...)!

O que eu tenho neste momento é o seguinte:

conn = New MySqlConnection

        conn.ConnectionString = "Server='" & ip.Text & "';Port='" & port.Text & "';Database='" & bd.Text & "';Uid='" & user.Text & "';Pwd='" & pass.Text & "';Connection Timeout=5;"

        Try

            conn.Open()

        Catch myerror As MySqlException

            MsgBox("Problema na ligação! Verifique todos os campos!", MsgBoxStyle.Critical)

        Finally

            conn.Dispose()

        End Try

SQL = "SELECT * FROM config"

        myCommand.Connection = conn

        myCommand.CommandText = SQL

        myAdapter.SelectCommand = myCommand

...

Obrigado!

cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não podes...

Como tu queres aceder à base de dados sem saberes os dados da ligação.... isto é do género... como posso abrir uma gaveta fechada à chave e cuja chave ficou dentro da gaveta.................

Este tipo de dados pu se guardam em ficheiros ini, ou no settings do vb

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não podes...

Como tu queres aceder à base de dados sem saberes os dados da ligação.... isto é do género... como posso abrir uma gaveta fechada à chave e cuja chave ficou dentro da gaveta.................

Este tipo de dados pu se guardam em ficheiros ini, ou no settings do vb

Então a unica solução é guardar num base de dados em acess á parte? E caso exista uma eventual troca de servidor, o utilizador muda no acesss a confugurações! È isso? Ou existem uma solução melhor para resolver este problema?

Já agora aproveito para colocar mais uma dúvida.. Tou a fazer o login, e no login tem uma combox, para mostrar os utilizadores disponiveis (os que estão na base de dados)... só que da forma que estou a fazer aparece o 1.º utilizador e depois aparece a password ....

O código que utilizo é o seguinte:

conn = New MySqlConnection
        conn.ConnectionString = "Server=" & inicial.ip & ";Database=" & inicial.bd & ";Uid=" & inicial.utilizador & ";Pwd=" & inicial.password & ";Connection Timeout=5;"
        Try
            conn.Open()
        Catch myerror As MySqlException
            MsgBox("Problema na ligação! Verifique todos os campos!", MsgBoxStyle.Critical)
            config.Show()
        End Try

        Dim a As MySqlDataReader
        Dim max As Integer
        Dim i As Integer

        myCommand.Connection = conn
        myCommand.CommandText = "SELECT count(*) FROM login"

        a = myCommand.ExecuteReader
        a.Read()
        max = a.GetValue(0)
        a.Close()

        myCommand.CommandText = "SELECT * FROM login"
        a = myCommand.ExecuteReader
        a.Read()

        For i = 1 To max
            user.Items.Add(a.GetValue(i))
        Next

Obrigado!

Aguardo respostas!

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então a unica solução é guardar num base de dados em acess á parte? E caso exista uma eventual troca de servidor, o utilizador muda no acesss a confugurações! È isso? Ou existem uma solução melhor para resolver este problema?

Já agora aproveito para colocar mais uma dúvida.. Tou a fazer o login, e no login tem uma combox, para mostrar os utilizadores disponiveis (os que estão na base de dados)... só que da forma que estou a fazer aparece o 1.º utilizador e depois aparece a password ....

O código que utilizo é o seguinte:

conn = New MySqlConnection
        conn.ConnectionString = "Server=" & inicial.ip & ";Database=" & inicial.bd & ";Uid=" & inicial.utilizador & ";Pwd=" & inicial.password & ";Connection Timeout=5;"
        Try
            conn.Open()
        Catch myerror As MySqlException
            MsgBox("Problema na ligação! Verifique todos os campos!", MsgBoxStyle.Critical)
            config.Show()
        End Try

        Dim a As MySqlDataReader
        Dim max As Integer
        Dim i As Integer

        myCommand.Connection = conn
        myCommand.CommandText = "SELECT count(*) FROM login"

        a = myCommand.ExecuteReader
        a.Read()
        max = a.GetValue(0)
        a.Close()

        myCommand.CommandText = "SELECT * FROM login"
        a = myCommand.ExecuteReader
        a.Read()

        For i = 1 To max
            user.Items.Add(a.GetValue(i))
        Next

Obrigado!

Aguardo respostas!

Cumps

Boas!

Já arranjei uma forma bastante simples de guardar as configurações de ligação ao servidor.... Guardo as configurações nos settings do vb... app.settings!

Se alguem quiser que explique como se faz eu posso explicar!

Agora queria saber se alguem  me pode ajudar em relação á minha outra dúvida...

De ir buscar os utilizadores (login) disponíveis na base de dados e mostra-los na combobox...

Tenho em cima o código que utilizado...

cumps,

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