ERRO AO INSERIR DADOS

ALTAIR148 10/05/2011 21:59:37
#373619
Boa noite,

Estou tendo problemas para inserir dados em um banco MYSQL, o sistema não retorna nenhum erro, o problema é que todos os campos ficam nulos no banco de dados, abaixo segue o meu código:


     Private Sub cadastra_emprestimo()
Dim command As New MySql.Data.MySqlClient.MySqlCommand([Ô]INSERT INTO cad_emprestimo (cod_livro) VALUES (@codigo_livro)[Ô], GetConexao2)
command.Parameters.AddWithValue([Ô]@codigo_livro[Ô], codigo_livro.Text)
command.ExecuteNonQuery()
command.Dispose()
End Sub



Fazendo alguns testes eu consigo inserir os dados, mas sem passar os parâmetros, fiz só para testar mesmo, abaixo segue o código:




     Private Sub cadastra_emprestimo()
Dim command As New MySql.Data.MySqlClient.MySqlCommand([Ô]INSERT INTO cad_emprestimo (cod_livro) VALUES (44)[Ô], GetConexao2)
command.Parameters.AddWithValue([Ô]@codigo_livro[Ô], codigo_livro.Text)
command.ExecuteNonQuery()
command.Dispose()
End Sub


Fazendo dessa forma ele insere o cod_livro com o valor [Ô]44[Ô].

O que pode estar acontecendo que ele só grava como nulo no banco de dados?



Obrigado
PEGUDO 11/05/2011 14:48:25
#373677
@codigo_livro é uma variável?

se for tem q ser assim
VALUES ([Ô] & @codigo_livro & [Ô])[Ô], GetConexao2)

Se não for uma variável, ele sempre vai inserir nulo, já que VALUES indica uma entrada de dados inteiro (numérico = 44) e você está passando string = @codigo_livro.

Se as dicas q passei não te ajudarem, coloque sua rotina aqui
Veja um exemplo meu de UPDATE, talvez possa te ajudar.


Dim Query As String = [txt-color=#e80000][Ô]update tblcolaboradores set permissao=[ô] [Ô][/txt-color] & Val(PermissaoTextBox.Text) & [txt-color=#e80000][Ô] [ô] where nome=[ô] [Ô][/txt-color] & NomeTextBox.Text & [txt-color=#e80000][Ô] [ô] [Ô][/txt-color]
Dim Conn As New SqlCeConnection([Ô]Data Source=Dados.sdf[Ô])
Dim Comando As New SqlCeCommand(Query, Conn)

Comando.Connection.Open()
Comando.ExecuteNonQuery()
JONATHANSTECKER 11/05/2011 18:30:51
#373714
ALTAIR, pelo que vejo está tudo correto.
Será que o controle codigo_livro.Text está retornando algo?

Faça o teste:
Private Sub cadastra_emprestimo()
Dim command As New MySql.Data.MySqlClient.MySqlCommand([Ô]INSERT INTO cad_emprestimo (cod_livro) VALUES (@codigo_livro)[Ô], GetConexao2)
command.Parameters.AddWithValue([Ô]@codigo_livro[Ô], [Ô]44[Ô]) [ô] Aqui ao invés de passar o valor de codigo_livro.Text passe um valor direto para o teste.
command.ExecuteNonQuery()
command.Dispose()
End Sub
ALTAIR148 11/05/2011 19:47:37
#373719
Abaixo segue o meu código

   Private Sub cadastra_emprestimo()
Dim command As New MySql.Data.MySqlClient.MySqlCommand([Ô]INSERT INTO cad_emprestimo (cod_livro) VALUES (@codigo_livro)[Ô], GetConexao2)
command.Parameters.AddWithValue([Ô]@codigo_livro[Ô], [Ô]44[Ô])
command.ExecuteNonQuery()
command.Dispose()
End Sub



Está muito estranho, no banco ele gera o registro, o campo com auto increment é preenchido normalmente, mas é pq ele é gerado pelo próprio banco, e o campo onde teria que ser inserido o código do livro fica NULL.
TECLA 11/05/2011 21:02:19
#373721
Resposta escolhida
Faca um teste, substitua o parâmetro @... que esta na linha do Insert por ? e retorne o resultado.
ALTAIR148 11/05/2011 21:11:50
#373723
Tecla, agora sim consegui inserir substituindo o parâmetro [Ô]@[Ô] por [Ô]?[Ô]. Mas saberias me dizer o motivo desse problema? Em outro form nesse mesmo aplicativo tem ocorrido esse problema, eu tento inserir um campo e ele não insere, ai por isso gostaria de saber o motivo, ou vou ter que mudar todo o meu código?

Obrigado.
Tópico encerrado , respostas não são mais permitidas