ERRO INSERT MYSQL

W8.LISBOA 04/06/2015 17:20:06
#447403
Pessoal,

Estou migrando do access para o MySQL e me deparei com o seguinte erro ao tentar fazer um insert [Ô]A cadeia de caracteres de entrada não estava em um formato incorreto.[Ô]
Segue o código:




    Using con As MySqlConnection = ConexaoComMysql()
Dim comando As MySqlCommand
Dim queryResult As Integer
con.Open()
comando = New MySqlCommand([Ô]SELECT COUNT(*) FROM Tabela WHERE Campo1 =[ô][Ô] & Me.TextBox1.Text & [Ô][ô][Ô], con)
queryResult = comando.ExecuteScalar()
If queryResult = 0 Then
comando = New MySqlCommand([Ô]INSERT INTO Tabela ([Campo1], [Campo2], [Campo3]) VALUES (@Campo1, @Campo2, @Campo3)[Ô], con)
comando.Parameters.AddWithValue([Ô]@Campo1[Ô], MySqlDbType.VarChar).Value = TextBox1.Text
comando.Parameters.AddWithValue([Ô]@Campo2[Ô], MySqlDbType.VarChar).Value = TextBox2.Text
comando.Parameters.AddWithValue([Ô]@Campo3[Ô], MySqlDbType.VarChar).Value = System.DateTime.Now
comando.ExecuteNonQuery()

MsgBox([Ô]sucesso[Ô])

Else
MsgBox([Ô]erro[Ô])
End If
End Using
NICKOSOFT 04/06/2015 17:52:10
#447405
Nao sei se seria isso, mas nos campos eu passo o nome da coluna, as colunas sao todas varchar mesmo? A coluna de data nao esta em date no bd?
W8.LISBOA 04/06/2015 18:15:25
#447407
Caro NICKOSOFT,

Melhorei o código para melhor entendermos, deixei todos os campos do banco como [Ô]varchar(253)[Ô] e o erro persiste.

          Using con As MySqlConnection = ConexaoComMysql()
Dim comando As MySqlCommand
Dim queryResult As Integer
con.Open()
comando = New MySqlCommand([Ô]SELECT COUNT(*) FROM Tabela WHERE Coluna1 =[ô][Ô] & Me.TextBox1.Text & [Ô][ô][Ô], con)
queryResult = comando.ExecuteScalar()
If queryResult = 0 Then
comando = New MySqlCommand([Ô]INSERT INTO Tabela ([Coluna1], [Coluna2], [Coluna3]) VALUES (@Coluna1, @Coluna2, @Coluna3)[Ô], con)
comando.Parameters.AddWithValue([Ô]@Coluna1[Ô], MySqlDbType.VarChar).Value = TextBox1.Text
comando.Parameters.AddWithValue([Ô]@Coluna2[Ô], MySqlDbType.VarChar).Value = TextBox2.Text
comando.Parameters.AddWithValue([Ô]@Coluna3[Ô], MySqlDbType.VarChar).Value = TextBox3.Text
comando.ExecuteNonQuery()
MsgBox([Ô]Sucesso[Ô])
Else
MsgBox([Ô]Já existe um registo[Ô])
End If
End Using
OMAR2011 04/06/2015 18:39:19
#447408
Resposta escolhida
Mude para,

Using con As MySqlConnection = ConexaoComMysql()
Dim comando As MySqlCommand
Dim queryResult As Integer
con.Open()
comando = New MySqlCommand([Ô]SELECT COUNT(*) FROM Tabela WHERE Coluna1 =[ô][Ô] & Me.TextBox1.Text & [Ô][ô][Ô], con)
queryResult = comando.ExecuteScalar()
If queryResult = 0 Then
comando = New MySqlCommand([Ô]INSERT INTO Tabela (Coluna1, Coluna2, Coluna3) VALUES (@Coluna1, @Coluna2, @Coluna3)[Ô], con)
comando.Parameters.Add([Ô]@Coluna1[Ô], MySqlDbType.VarChar).Value = TextBox1.Text
comando.Parameters.Add([Ô]@Coluna2[Ô], MySqlDbType.VarChar).Value = TextBox2.Text
comando.Parameters.Add([Ô]@Coluna3[Ô], MySqlDbType.VarChar).Value = TextBox3.Text
comando.ExecuteNonQuery()
MsgBox([Ô]Sucesso[Ô])
Else
MsgBox([Ô]Já existe um registo[Ô])
End If
End Using
O que está de vermelho,não é uma forma adequada para procura registro e comparar.Dor de cabeça.
([Ô]SELECT [txt-color=#e80000]COUNT(*)[/txt-color] FROM Tabela WHERE Coluna1 =[ô][Ô] & Me.TextBox1.Text & [Ô][ô][Ô], con)
W8.LISBOA 04/06/2015 18:52:42
#447410
Valeu OMAR2011,

Agradeço a ajuda, e aproveitando seus conhecimentos, qual seria uma melhor forma de comparar nesta situação?
FILMAN 04/06/2015 19:15:52
#447411
Qual o Erro que apresenta no sistema?

Esse método somente passa os seguintes paramentros (<string parameterName>, <object value>), não tem Type
comando.Parameters.AddWithValue

Mas tente retirar os colchetes no nome das colunas no INSERT pra ver se resolve e passe um tamanho para o campo.
Exempo se os campos estão varchar(253) então diga para o parametro que os campo tem esse tamanho.

Use o comando.Parameters.Add

comando = New MySqlCommand([Ô]INSERT INTO Tabela (Coluna1, Coluna2, Coluna3) VALUES (@Coluna1, @Coluna2, @Coluna3)[Ô], con)
comando.Parameters.Add([Ô]@Coluna1[Ô], MySqlDbType.VarChar, 253).Value = TextBox1.Text
comando.Parameters.Add([Ô]@Coluna2[Ô], MySqlDbType.VarChar, 253).Value = TextBox2.Text
comando.Parameters.Add([Ô]@Coluna3[Ô], MySqlDbType.VarChar, 253).Value = TextBox3.Text



Espero ter ajudado
OMAR2011 04/06/2015 19:23:40
#447412
Um exemplo simples com uma Tabela de Clientes.
Quando for registrar e para consultar, de preferência usa CPF.Isto porque,não existe duas pessoas com o mesmo CPF,RG mas existe homônimo.
Procure sempre uma forma de só existir um registro com a mesma identificação.
é mais o u menos assim.
Conseguiu seu objetivo, pode fechar o post.
Valeu.
W8.LISBOA 04/06/2015 19:56:49
#447413
Valeu FILMAN, a solução do Omar funcionou, de qualquer forma obrigado a todos!
Tópico encerrado , respostas não são mais permitidas