Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Joffre Mota

[Resolvido] Incluir dados no MySQL com VB.net

Recommended Posts

Boa noite.

 

Estou tendo problemas (como sempre) para incluir dados em determinada tabela.

 

Estou usando o seguinte método para adicionar os dados:

Public Sub adicionarDados(ByVal comando As MySqlCommand)
       Try
           Conectar()
           comando.Connection = conn
           reg = comando.ExecuteNonQuery()
           MessageBox.Show("Dados inseridos com sucesso", "Inclusão", MessageBoxButtons.OK, MessageBoxIcon.Information)
       Catch ex As Exception
           MessageBox.Show(ex.Message, "Erro durante Inclusão!", MessageBoxButtons.OK, MessageBoxIcon.Error)
       Finally
           If Not conn Is Nothing Then
               If conn.State = ConnectionState.Open Then
                   conn.Close()
                   comando.Parameters.Clear()
               End If
           End If
       End Try
   End Sub

 

E abaixo, segue a ação do botão CADASTRAR (que deveria estar cadastrando os dados na tabela em questão)

    Private Sub btn_Cadastrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cadastrar.Click
       comando.CommandText = "INSERT INTO funcao (id_funcao, desc_funcao) VALUES (@txt_CodFuncao, @txt_DescrFuncao)"
       comando.Parameters.AddWithValue("@id_funcao", txt_CodFuncao.Text)
       comando.Parameters.AddWithValue("@desc_funcao", txt_DescrFuncao.Text)
       bd.adicionarDados(comando)
   End Sub

Se eu comentar as duas linhas com o código abaixo, e passar os valores diretamente na linha do comando INSERT, tudo é adicionado corretamente ao banco.

comando.Parameters.AddWithValue

 

Aqui, uma screen do formulário no qual estou trabalhando:

imagemdfx.jpg

 

E aqui a forma como a tabela foi criada no banco de dados:

CREATE TABLE funcao (
 id_funcao int(11) NOT NULL,
 desc_funcao varchar(50) NOT NULL,
 PRIMARY KEY  (id_funcao)
) ;

 

O erro gerado é:

imagemgrq.jpg

 

Alguém pode clarear para mim o que há de errado?

Agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Repare nessas linhas:

comando.CommandText = "INSERT INTO funcao (id_funcao, desc_funcao) VALUES (@txt_CodFuncao, @txt_DescrFuncao)"
comando.Parameters.AddWithValue("@id_funcao", txt_CodFuncao.Text)
comando.Parameters.AddWithValue("@desc_funcao", txt_DescrFuncao.Text)

 

Na primeira linha colocou: @txt_CodFuncao e na segunda linha colocou @id_funcao

 

Nomes diferentes, entendeu?

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensei que fosse isso também, mas não deu certo.

Já fiz todas as combinações possíveis nesses campos e não dá certo.

Agora coloquei o id_funcao como Auto_Increment para me preocupar apenas com a inclusão da descrição, mas continua dando o mesmo problema (mas na desc_funcao).

 

Obrigado pela atenção.

Vou continuar pesquisando, se eu conseguir fazer funcionar, posto todas as classes aqui para futuras pesquisas de outros usuários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como falei, já usei todos os tipos de combinações possíveis para esses 4 campos.

 

Já coloquei desc_funcao no lugar de txt_DescrFuncao.Text e vice-versa, e todas as alterações possíveis.

 

Lembrando:

No banco de dados:

- id_funcao

- desc_funcao

No VB:

- txt_CodFuncao.Text

- txt_DescrFuncao.Text

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se este código te ajuda...

 

Conexão

Imports MySql.Data.MySqlClient
Public Class admissao
   Dim sqlconection As MySqlConnection = New MySqlConnection
   Dim serverstring As String = "Server= localhost; User= seu user; Password=suasenha;database=suabd"

'verificando se está conectado'

Private Sub form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       sqlconection.ConnectionString = serverstring
       Try
           If sqlconection.State = ConnectionState.Closed Then
               sqlconection.Open()
               MsgBox("Connection Successfully to DataBase")
           Else
               sqlconection.Close()
               MsgBox("Connection has closed")
           End If
       Catch ex As Exception
           MsgBox(ex.ToString)

       End Try
   End Sub

Private Sub cmdcadastrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcadastrar.Click
       Dim SQLQStatement As String = "INSERT INTO tabela(nome, telefone) VALUES ('" & txtnome.Text & "','" & txttelefone.Text & "')"
       savedata(SQLQStatement)
   End Sub
'Executar comando pra inserir'

Public Sub savedata(ByRef SQLStatement As String)
       Dim cmd As New MySqlCommand
       cmd = New MySqlCommand
       With cmd
           .CommandText = SQLStatement
           .CommandType = CommandType.Text
           .Connection = sqlconection
           .ExecuteNonQuery()
       End With
       sqlconection.Close()
       MsgBox("Cadastrado com sucesso")
   End Sub
End Class

 

espero que sirva At+ Brow...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se este código te ajuda...

 

Conexão

Imports MySql.Data.MySqlClient
Public Class admissao
   Dim sqlconection As MySqlConnection = New MySqlConnection
   Dim serverstring As String = "Server= localhost; User= seu user; Password=suasenha;database=suabd"

'verificando se está conectado'

Private Sub form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       sqlconection.ConnectionString = serverstring
       Try
           If sqlconection.State = ConnectionState.Closed Then
               sqlconection.Open()
               MsgBox("Connection Successfully to DataBase")
           Else
               sqlconection.Close()
               MsgBox("Connection has closed")
           End If
       Catch ex As Exception
           MsgBox(ex.ToString)

       End Try
   End Sub

Private Sub cmdcadastrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcadastrar.Click
       Dim SQLQStatement As String = "INSERT INTO tabela(nome, telefone) VALUES ('" & txtnome.Text & "','" & txttelefone.Text & "')"
       savedata(SQLQStatement)
   End Sub
'Executar comando pra inserir'

Public Sub savedata(ByRef SQLStatement As String)
       Dim cmd As New MySqlCommand
       cmd = New MySqlCommand
       With cmd
           .CommandText = SQLStatement
           .CommandType = CommandType.Text
           .Connection = sqlconection
           .ExecuteNonQuery()
       End With
       sqlconection.Close()
       MsgBox("Cadastrado com sucesso")
   End Sub
End Class

 

espero que sirva At+ Brow...

 

Serviu DEMAIS cara... Apenas tive que fazer umas alterações, mas MUITO OBRIGADO!!!! Daqui a pouco coloco aqui como fiz para dar certo... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.