Archief - SQL Syntax error in vb.net

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

JasonC

Legacy Member
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:
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
Die property's zyn boven aangemaakt.
De code van mijn form om de gegevens toe te voegen:
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
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."
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?

JasonC

Legacy Member
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 ;)

Parnakra

Legacy Member
Oh, als je al genoeg met SQL gewerkt hebt, zal je code wel immuun zijn voor SQL injection. :)

Wat je probleem betreft, ik gok dat
Code:
k.gebruiker = My.Settings.ingelogd
een boolean is en je die dus op een andere manier in je query zal moeten zetten. Maar dat zal je ongetwijfeld zelf kunnen. :)

JasonC

Legacy Member
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

JasonC

Legacy Member
Parnakra zei:
Oh, als je al genoeg met SQL gewerkt hebt, zal je code wel immuun zijn voor SQL injection. :)
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? :)

pietje666

Legacy Member
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 :/

Moto

Legacy Member
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 strings

Cycloon

Legacy Member
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).

JasonC

Legacy Member
Moto zei:
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 strings

Cycloon zei:
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).

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 :p
Toch bedankt voor alle reacties! ;)

chromeplus

Legacy Member
waarom schrijft ge nu niemeer alles met uw vervelende y in plaats van ij?

JasonC

Legacy Member
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.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan