Ga naar inhoud

Quotes in een SQL string


Aanbevolen berichten

Ik ben bezig met een database dat moet registreren welke films en muziek ik heb. De applicatie er omheen doe ik met VB6. Het probleem is dat wanneer ik de volgede SQL code in VB zet: comMuziekOverzicht.CommandText = "select Artiest, Titel from Muziek where Artiest = " & "'" & cbMuziek.Text & "'" rsMuziekOverzicht.Requery Dan geeft het VB een error wanneer ik gegevens opvraag waarin een quote zit dus bijvoorbeeld: "Can't stand losing you" Nu weet ik wel dat het komt doordat VB denkt bij de quote dat de query is afgelopen en dus niet doorgaat. De vraag is dus is er een manier dat ik wel quotes kan blijven gebruiken in titels etc. Alvast bedankt
Link naar reactie
[quote:214929372f="repelsteeltje"]Ik ben bezig met een database dat moet registreren welke films en muziek ik heb. De applicatie er omheen doe ik met VB6.[/quote:214929372f]Om wat voor type database gaat het? [quote:214929372f="repelsteeltje"] Nu weet ik wel dat het komt doordat VB denkt bij de quote dat de query is afgelopen en dus niet doorgaat. De vraag is dus is er een manier dat ik wel quotes kan blijven gebruiken in titels etc.[/quote:214929372f] [url=http://www.google.nl/search?ie=UTF-8&q=parameterized+queries&spell=1]parameterized queries[/url]
Link naar reactie
HEY! Gebruik gewoon queries met parameters! Is ook een stuk veiliger voor je systeem. Dus: [code:1:a861f2f08d]SELECT * FROM Tabel WHERE Test = :Whatever[/code:1:a861f2f08d] En vervolgens de juiste waarde aan de parameter "Whatever" meegeven. Weet je namelijk wat zo grappig kan zijn met je query... Als je geen parameters gebruikt is het in principe mogelijk dat een hacker diverse commando's kan geven die je eigenlijk niet zou willen. Zo kan men bijvoorbeeld invoeren: [code:1:a861f2f08d]"; Delete from Tabel;[/code:1:a861f2f08d] Dit zou bij jouw code resulteren in: [code:1:a861f2f08d]SELECT * FROM Tabel WHERE Test = ""; Delete from Tabel;[/code:1:a861f2f08d] En de echte database-experts zien hier een groot probleem. Je enkele query is nu twee queries geworden. Eentje die data selecteert en een tweede die de tabel leeggooit. Lekker hoor... (Dit soort truken zijn overigens al vaak gebruikt door hackers om in diverse systemen in te breken.) Indien je een geparameteriseerde query gebruikt, heb je dit risico niet. Immers, de Database driver gaat eerst de query parsen en gaat daarna de parameters invullen, waardoor deze niet als SQL code gezien worden. In jouw situatie voeg je eerst de parameter toe waardoor deze een onderdeel wordt van de query die je gaat uitvoeren en da's dus riskant...
Link naar reactie
Ik maak ook gebruik van dit soort code: [code:1:4f293b9c67]SELECT * FROM Tabel WHERE Test = :Whatever[/code:1:4f293b9c67] Dan declareer ik een string in VB waar ik de waarde inzet, het probleem blijft echter wel bestaan dat VB de Quotes gewoon mee neemt in de query en deze dus vroeg tijdig afbreekt. In Access zelf is dit geen probleem. Ik dank in iedergaval iedereen die tot nu toe heeft mee gedacht.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...