Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

flaviojef

Gravar em 3 tabelas diferentes[Resolvido]

Mensagens Recomendadas

flaviojef

boas pessoal

estou com um problema ao tentar guardar num form dados para 3 tabelas diferentes numa base de dados em MySQL alguem sabe como posso resolver isso? eu com uma tabela sei e funciona ate posso mostrar um exemplo:

Dim SQL As String = "INSERT INTO clientes(username, pass, nome, bi, morada, n_telefone, email, localidade, codigo_postal, codigo_postal2)" & _
        "VALUES (?username, ?pass, ?nome, ?bi, ?morada, ?n_telefone, ?email, ?localidade, ?codigo_postal, ?codigo_postal2);"

        ' Cria uma nova ligação à base de dados 
        Dim connection As New MySqlConnection("server=it.integrale.com.pt; user id=jef; password=jef; database=megastand")
        ' Criação do comando indicando a instrução e a ligação 
        Dim command As New MySqlCommand(SQL, connection)

        'Indicação dos parâmetros que serão inseridos 
        command.Parameters.Add("?pass", MySqlDbType.VarChar).Value = txt_registo_pass_cliente.Text
        command.Parameters.Add("?nome", MySqlDbType.VarChar).Value = txt_registo_nome_cliente.Text
        command.Parameters.Add("?bi", MySqlDbType.Int64).Value = txt_registo_bi_cliente.Text
        command.Parameters.Add("?morada", MySqlDbType.VarChar).Value = txt_registo_morada_cliente.Text
        command.Parameters.Add("?n_telefone", MySqlDbType.Int64).Value = txt_registo_telefone_cliente.Text
        command.Parameters.Add("?email", MySqlDbType.VarChar).Value = txt_registo_email_cliente.Text
        command.Parameters.Add("?localidade", MySqlDbType.VarChar).Value = txt_registo_localidade_cliente.Text
        command.Parameters.Add("?codigo_postal", MySqlDbType.Int32).Value = txt_registo_cp_cliente1.Text
        command.Parameters.Add("?username", MySqlDbType.VarChar).Value = txt_registo_user_cliente.Text
        command.Parameters.Add("?codigo_postal2", MySqlDbType.Int32).Value = txt_registo_cp_cliente2.Text
        ' Abre a ligação, executa o comando e guarda em "x" o número de registos inseridos 
        connection.Open()
        Dim x As Integer = command.ExecuteNonQuery()
        If x = 1 Then
            MsgBox("Cliente " & txt_registo_nome_cliente.Text & " registado com sucesso!", , "Cliente Registado")
            bt_voltar.Visible = True

        End If
        ' Fecha a ligação e limpa as variáveis
        connection.Close()
        connection = Nothing
        command = Nothing

mas la está nu INSERT INTO clientes tive de criar uma variavel SQL

como é que guardo agora valores em 3 tabelas?  :hmm:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
flaviojef

podes.me dar um exemplo, eu mais ou menos ja sei como é mas cria mesmo ter a certeza até porque na parte:

Dim command As New MySqlCommand(SQL, connection)

ele so aceita dois

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

Abres só uma vez a ligação à base de dados e depois fazes vários comandos

(não testado)


Using conn As New MySqlConnection("...")
   conn.Open()
   Using command1 As New MySqlCommand("INSERT INTO ...", connection)
          command1.ExecuteNonQuery()
   End Using
   Using command2 As New MySqlCommand("INSERT INTO ...", connection)
         command2.ExecuteNonQuery()
   End Using
   Using command3 As New MySqlCommand("INSERT INTO ...", connection)
          command3.ExecuteNonQuery()
   End Using
End Using

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
flaviojef

eu andei para aqui a tentar mas ainda nao consegui  :wallbash:

eu nao sei como fazer os parametros depois para cada tabela

agradecia uma ajudinha quem soube-se

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ByMySlf

Para cada command adicionas os parâmetros, tal como fizeste no teu exemplo. Alo deste género:

Using conn As New MySqlConnection("...")
   conn.Open()
   Using command1 As New MySqlCommand("INSERT INTO ...", connection)
          command1.Parameters.Add("?teste1", MySqlDbType.VarChar).Value = variável
          command1.ExecuteNonQuery()
   End Using

   Using command2 As New MySqlCommand("INSERT INTO ...", connection)
         command2.Parameters.Add("?teste2", MySqlDbType.VarChar).Value = variável2
         command2.ExecuteNonQuery()
   End Using

   Using command3 As New MySqlCommand("INSERT INTO ...", connection)
          command3.Parameters.Add("?teste3", MySqlDbType.VarChar).Value = variável3
          command3.ExecuteNonQuery()
   End Using
End Using

Só coloquei um parâmetro para cada command a título de exemplo. O número exacto de parâmetros, por command, vai depender da quantidade de valores que pretendes passar.

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.