2010-11-28 4 views
0

J'utilise une base de données Access et vb.net 2010. J'ai créé une table dans la base de données avec des colonnes pour title, datein, dateout et roomnymber. Dans vb.net 2010, j'ai fait un titre distingué = combobox, datein et dateout = DateTimePicker. Lorsque je clique sur F5, une erreur se produit: INSERT INTO Syntax Error dans l'instruction. Voici mon code:comment stocker des données de vb.net pour accéder à une base de données

Dim sql As String 
    sql = "INSERT INTO tcekin(title,firstname,lastname,address,country,company,roomnumber,datein,dateout,rommtype,note)" & "VALUES('" & ComboBox1.Text & _ 
    "','" & txtFirstName.Text & "','" & txtLastName.Text & "','" & txtAddress.Text & "','" & cboCountry.Text & "','" & txtCompany.Text & "','" & txtNumber.Text & _ 
    "','" & dptDateIn.Text & "','" & dptDateOut.Text & "','" & cboRoom.Text & "','" & txtNotes.Text & "')" 
    cmmd = New OleDbCommand(sql, cnn) 
+0

Anglais seulement, s'il vous plaît. Je vais fournir une traduction google dans un instant et pourrait même modifier pour le contenu à la main, mais vous êtes susceptible de faire beaucoup mieux en éditant la question à poser en anglais dans vos propres mots. –

+0

owgh..Im sory, parce que mon anglais Broken ^^ – existsman

Répondre

3

Le premier problème ici est jamais jamais jamais concaténation de chaîne utiliser pour construire vos requêtes comme ça. Faites comme ceci:

Dim sql As String = _ 
    "INSERT INTO tcekin " &_ 
    "(title,firstname,lastname,address,country,company,roomnumber,datein,dateout,rommtype,note)" &_ 
    "VALUES(?,?,?,?,?,?,?,?,?,?,?)" 
cmmd = New OleDbCommand(sql, cnn) 
cmmd.Parameters.AddWithValue("Title", Combobox1.Text) 
cmmd.Parameters.AddWithValue("FirstName", txtFirstName.Text) 
''# ... 
''# ... 

Cela permettra également rendre plus facile à repérer et éviter les erreurs de syntaxe comme celle que vous vous plaignez.

+0

donc je dois ajouter cmmd.Parameters.AddWithValue ("FirstName", txtFirstName.Text) un par un? de txtFirstName jusqu'à note? – existsman

+0

Oui. Toujours utiliser des requêtes paramétrées. La méthode de concaténation de chaînes que vous utilisiez vous permet d'être vulnérable aux hacks d'injection sql. –

+0

Où est mon bouton + 1M? – Bobby

Questions connexes