
Database/SQL
Beheers SQL-databasetoegang in Go met het database/sql-pakket: verbindingen, query's, transacties, prepared statements en beheer van de connection pool.
1Wat is het belangrijkste verschil tussen DB.Query en DB.Exec?
Wat is het belangrijkste verschil tussen DB.Query en DB.Exec?
Antwoord
DB.Query wordt gebruikt om SELECT-query's uit te voeren die rijen met gegevens retourneren, terwijl DB.Exec dient om SQL-opdrachten uit te voeren die geen resultaten retourneren (INSERT, UPDATE, DELETE). Query retourneert een Rows-object dat moet worden doorlopen en gesloten met rows.Close(), terwijl Exec een Result retourneert met het aantal beïnvloede rijen en de laatst ingevoegde ID.
2Waarom is het belangrijk om het Rows-object te sluiten na een query?
Waarom is het belangrijk om het Rows-object te sluiten na een query?
Antwoord
Het sluiten van Rows met rows.Close() geeft de bronnen van de database-verbinding vrij, waardoor de verbinding kan terugkeren naar de pool. Zonder sluiten blijven verbindingen bezet en kan de pool uitgeput raken, wat blokkades veroorzaakt. Het wordt aanbevolen om defer rows.Close() direct na het controleren van de Query-fout te gebruiken om sluiting te garanderen, zelfs als er later een fout optreedt.
3Welke methode moet worden gebruikt om één enkele resultaatrij op te halen?
Welke methode moet worden gebruikt om één enkele resultaatrij op te halen?
Antwoord
DB.QueryRow is speciaal ontworpen om één enkele rij op te halen en retourneert een Row-object (enkelvoud). In tegenstelling tot Query, dat Rows retourneert en iteratie met rows.Next() vereist, vereenvoudigt QueryRow de code door direct scannen mogelijk te maken. Foutafhandeling vindt plaats tijdens de Scan, waarbij sql.ErrNoRows aangeeft dat er geen rij is gevonden.
Hoe open je een verbinding met een database met database/sql?
Wat retourneert de methode rows.Scan()?
+19 gespreksvragen
Andere Go-sollicitatieonderwerpen
Go-basis
Go-datastructuren
Go-interfaces
Foutafhandeling
Goroutines-basis
Channels
Go Modules
HTTP-server
HTTP-client
JSON-codering
context-pakket
Testing
Concurrency-patronen
Synchronisatieprimitieven
Go-webframeworks
REST API-ontwerp
gRPC
Reflection
Geheugenbeheer
Prestatie-optimalisatie
Generics
Go Design Patterns
Microservices
Beveiliging en authenticatie
Docker & Containerization
Kubernetes Basics
Geavanceerd Go
CLI-ontwikkeling
Beheers Go voor je volgende gesprek
Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.
Begin gratis