query
Wat is het?
Een query is een verzoek aan een database om gegevens op te halen, toe te voegen, te wijzigen of te verwijderen. In de context van web- en mobileontwikkeling zijn queries meestal SQL-opdrachten zoals SELECT, INSERT, UPDATE en DELETE die een resultset of een status teruggeven. Belangrijke aspecten zijn hoe je parameters doorgeeft (bijv. geparametriseerde queries), prestatie (indexen, joins, LIMIT, paginatie) en veiligheidsrisico's zoals SQL-injectie. Voor MySQL geldt dat het een client-server database is met rijke features en concurentiebeheer; SQLite is daarentegen een embedded database die vaak lokaal in mobiele apps gebruikt wordt en andere beperkingen en optimalisaties heeft.
Praktisch voorbeeld
Stel: je bouwt een mobiele notitie-app die offline werkt met SQLite. Om de laatste 20 notities van een gebruiker op te halen gebruik je een geparametriseerde query zoals 'SELECT * FROM notes WHERE user_id = ? ORDER BY updated_at DESC LIMIT 20'. Door een parameter te gebruiken voorkom je SQL-injectie en kun je dezelfde query hergebruiken met verschillende waarden. Op een server-side API met MySQL zou je soortgelijke queries uitvoeren maar ook indexen op user_id en updated_at aanmaken om de snelheid te verbeteren, en je zou prepared statements of een ORM gebruiken om veiligheid en onderhoudbaarheid te vergroten.
Test je kennis
Welke van de volgende methoden is de meest betrouwbare manier om SQL-injectie te voorkomen bij het uitvoeren van MySQL/SQLite-queries?