2017-10-11 3 views
-1

ceci est mon exemple de codeQuelle est la syntaxe correcte dans mysql vb.net pour la requête de mise à jour?

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     myConn = New MySqlConnection 
    myConn.ConnectionString = "server=localhost;userid=root;password=root;database=itss" 
    Dim reader As MySqlDataReader 

    Try 
     myConn.Open() 
     Dim query As String 
     query = "update itss.announcement set annoMessage = '" & TextBox1.Text & "' where idAnno = 3" 
     command = New MySqlCommand(query, myConn) 
     reader = command.ExecuteReader 
     myConn.Close() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    Finally 
     myConn.Dispose() 
    End Try 
    'strMessage = TextBox1.Text 
    Form1.GroupBox1.Select() 
    Form1.Activate() 
    Form4.Activate() 
    Me.Hide() 
End Sub 

quand je clique sur le bouton une exception apparaît en disant

Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur mysql pour la bonne syntaxe à utiliser près de 's révolutionnaire pour défier le vieux modèle d'hier, et de créer demain n' à la ligne 1

+1

C'est ce qui vient de ne pas utiliser de paramètres. Paramétrer votre requête SQL et cela fonctionnera comme prévu. Lire la suite ici: http://jmcilhinney.blogspot.com.au/2009/08/using-parameters-in-adonet.html – jmcilhinney

Répondre

1

Le problème est que vous utilisez reader = command.ExecuteReader sur UPDATE instruction avec chaîne d'arguments concaténés. Vous devez utiliser ExecuteNonQuery avec requête paramétrées comme ceci:

myConn.Open() 
Dim query As String 
query = "update itss.announcement set annoMessage = @message where idAnno = 3" 
command = New MySqlCommand(query, myConn) 
command.Parameters.Add("@message", MySqlDbType.VarChar).Value = TextBox1.Text 
reader = command.ExecuteNonQuery() ' this is used for UPDATE statement 
myConn.Close() 

NB: ExecuteReader utilisé pour retourner les résultats de la requête de déclaration SELECT, à savoir SELECT * FROM itss.announcement WHERE idAnno = 3.

+0

Il y a une erreur. il indique 'BC30311 \t La valeur de type' Integer 'ne peut pas être convertie en' MySqlDataReader '.' –

+0

Vous ne pouvez pas affecter le résultat de la requête 'UPDATE' (qui est un entier) à' MySqlDataReader' en utilisant 'ExecuteReader'. Utilisez 'ExecuteNonQuery' et supprimez' ExecuteReader' comme suggéré. –