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

Sign in to follow this  
flaviojef

Gravar em 3 tabelas diferentes[Resolvido]

Recommended Posts

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?  🤔

Share this post


Link to post
Share on other sites
jpaulino

como é que guardo agora valores em 3 tabelas?  🤔

Fazes 3 comandos T-SQL (INSERT INTO ...)

Share this post


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

Share this post


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

Share this post


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

Share this post


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

Share this post


Link to post
Share on other sites
flaviojef

neste caso como tu fizes.te = variavel1; variavel2; variabel3 meto as textbox respectivas certo?

Share this post


Link to post
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
Sign in to follow this  

×

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.