Vraag & Antwoord

Programmeren

Quotes in een SQL string

6 antwoorden
  • 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
  • Dan moet je volgens mij 2 quotes zetten, dus zoiets: SELECT * FROM Tabel WHERE Test = 'Dit is een ''test''' Dit kun je bijv. bereiken door de Replace functie elke ' laten omzetten in '' Ik hoop dat dit is wat je bedoelt?
  • [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]
  • [quote:d85f9911a1]Om wat voor type database gaat het?[/quote:d85f9911a1] Het gaat om een Access Database
  • 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...
  • 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.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.