Thread: SQL Syntax error in vb.net
-
21-04-2010, 21:05 #1
SQL Syntax error in vb.net
Ik ben bezig met een programma te schrijven, met een database connectie waar je simpelweg gegevens kan toevoegen, bekijken, verwijderen en wijzigen. Ik gebruik daarvoor een acces(2003) database .mdb
Ik doe mijn data acces in aparte klassen.
In mijn klassen "Klanten" heb ik dus een sub om nieuwe klanten toe te voegen:
Die property's zyn boven aangemaakt.Code:Dim connstring As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & My.Settings.connstring & "'" Dim comm As New OleDb.OleDbCommand Dim dr As OleDb.OleDbDataReader Public Sub saveklant() Dim conn As New OleDb.OleDbConnection(connstring) conn.Open() comm.Connection = conn comm.CommandText = "INSERT INTO tbl_klanten (aanspreking, naam, voornaam, bedrijf, maatschappelijke_zetel, gsm, e-mail_adres, gebruiker) VALUES ('" & _aanspreking & "','" & _naam & "','" & _voornaam & "','" & _bedrijf & "','" & _zetel & "','" & _GSM & "','" & _email & "', '" & _gebruiker & "')" comm.ExecuteNonQuery() conn.Close() End Sub
De code van mijn form om de gegevens toe te voegen:
Nu krijg ik elke keer als ik run, de gegevens invul en op de button klik een syntax error: "De instructie INSERT bevat een syntaxisfout."Code:Private Sub btnsaveclient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsaveclient.Click Dim k As New Klanten k.aanspreking = cboAanspreking.Text k.naam = txtnaam.Text k.voornaam = txtvoornaam.Text k.bedrijf = txtbedrijf.Text k.zetel = txtzetel.Text k.GSM = txtgsm.Text k.email = txtemail.Text k.gebruiker = My.Settings.ingelogd k.saveklant() MsgBox("U hebt een nieuwe klant aangemaakt: " & k.aanspreking & " " & k.naam & " " & k.voornaam & "", MessageBoxIcon.Information, "Taskbuddy - Klant aangemaakt") Me.Close() End Sub
Ik heb eindeloos zitten nakijken naar de namen van mijn tabel en van mijn kollommen, naar haakjes, aanhaaltekens, maar ik heb niets gevonden, dit zou moeten werken maar dat doet het niet. :S
Is er iemand die me hiermee kan helpen?Last edited by JasonC; 21-04-2010 at 21:19.
PSN: DeMoh9251no votes
-
-
21-04-2010, 22:38 #2no votes
-
22-04-2010, 00:20 #3
Bedankt, maar ik heb geen tutorials nodig, ik heb al genoeg met sql gewerkt, normaal zou ik die error zelf vinden, maar ik heb alles tientallen keren herbekeken, nix gevonden, anders zou ik het niet hier hebben gepost
PSN: DeMoh9251no votes
-
22-04-2010, 00:38 #4
Oh, als je al genoeg met SQL gewerkt hebt, zal je code wel immuun zijn voor SQL injection.

Wat je probleem betreft, ik gok dateen boolean is en je die dus op een andere manier in je query zal moeten zetten. Maar dat zal je ongetwijfeld zelf kunnen.Code:k.gebruiker = My.Settings.ingelogd
no votes
-
22-04-2010, 01:14 #5
nee, das geen boolean, das een string van diegene die ingelogd is, kheb da stukske al zelfs van even in comment gezet, hetzelfde resultaat :S
PSN: DeMoh9251no votes
-
22-04-2010, 01:17 #6
sorry als hetmisschien leek da ik een dikke nek had ofzo, maar het is egt een irritante error, kheb al zo'n twee uur zitten zoeken wat het kan zijn, kheb vanalles geprobeerd, aan anderen laten zien, en zonder resultaat, en dat voor zo'n poepsimpel sql commandje. please bare with me, je kan me wel begrijpen, niet?
PSN: DeMoh9251no votes
-
22-04-2010, 02:03 #7Member
- Registered
- 18/12/07
- Location
- Wijnegem
- Posts
- 1,158
- iTrader
- 3 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/5
kweet niet hoe de syntax van acces is maar bij mysql / postgres moet er na de tabelnaam nog values tussenkomen anders krijgde een syntax error
dus comm.CommandText = "INSERT INTO tbl_klanten values(aanspreking, naam, voornaam, bedrijf, maatschappelijke_zetel, gsm, e-mail_adres, gebruiker) VALUES ('" & _aanspreking & "','" & _naam & "','" & _voornaam & "','" & _bedrijf & "','" & _zetel & "','" & _GSM & "','" & _email & "', '" & _gebruiker & "')"
edit: nvm lekker fout gezien :/Last edited by pietje666; 22-04-2010 at 15:24.
no votes
-
22-04-2010, 11:27 #8Member
- Registered
- 17/07/02
- Location
- Wilrijk
- Posts
- 1,994
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 9/16
Doe eens een quickwatch op die comm.CommandText
en run die sql dan eens direct in access
zit misschiens een crappy character zoals "'" in 1 van die stringsno votes
-
22-04-2010, 11:36 #9Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Gebruik idd gewoon parameters:
- Query zal overzichtelijker zijn om te lezen waardoor je fouten snel ziet (in dit geval dus duidelijk niet).
- De query zal ook steeds veilig uitgevoerd kunnen worden (in dit geval dus ook duidelijk niet zo).“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
22-04-2010, 14:11 #10
Had ik al allemaal gedaan. Er was niets verkeerd met de code, visual studio deed al efkes raar bij mij, dus heb ik het opnieuw geïnstalleerd, dan lukt ineens alles wel... Tzal wel een "computerlijk" foutje zijn geweest

Toch bedankt voor alle reacties!
PSN: DeMoh9251no votes
-
22-04-2010, 16:38 #11Banned
- Registered
- 09/04/10
- Location
- hasselt
- Posts
- 810
- iTrader
- 15 (100%)
- Mentioned
- 0 Post(s)
waarom schrijft ge nu niemeer alles met uw vervelende y in plaats van ij?
no votes
-
22-04-2010, 16:55 #12
waarom zoekt gij geen leve ipv mij de hele tijd int oog te houde, isda geen goei idee?
btw @ admins: hier mag een slotje op, voordat die kinderachtige ruziestoker zijn zin krijgt.PSN: DeMoh9251no votes

