
Database/SQL
Meistern Sie den Zugriff auf SQL-Datenbanken in Go mit dem Paket database/sql: Verbindungen, Abfragen, Transaktionen, Prepared Statements und Verwaltung des Connection-Pools.
1Was ist der Hauptunterschied zwischen DB.Query und DB.Exec?
Was ist der Hauptunterschied zwischen DB.Query und DB.Exec?
Antwort
DB.Query wird verwendet, um SELECT-Abfragen auszuführen, die Datenzeilen zurückgeben, während DB.Exec zum Ausführen von SQL-Befehlen dient, die keine Ergebnisse zurückgeben (INSERT, UPDATE, DELETE). Query gibt ein Rows-Objekt zurück, das durchlaufen und mit rows.Close() geschlossen werden muss, wohingegen Exec ein Result zurückgibt, das die Anzahl der betroffenen Zeilen und die zuletzt eingefügte ID enthält.
2Warum ist es wichtig, das Rows-Objekt nach einer Abfrage zu schließen?
Warum ist es wichtig, das Rows-Objekt nach einer Abfrage zu schließen?
Antwort
Das Schließen von Rows mit rows.Close() gibt die Ressourcen der database-Verbindung frei und ermöglicht es der Verbindung, in den pool zurückzukehren. Ohne Schließen bleiben Verbindungen belegt und der pool kann erschöpft werden, was zu Blockierungen führt. Es wird empfohlen, defer rows.Close() unmittelbar nach der Prüfung des Query-Fehlers zu verwenden, um das Schließen auch bei einem nachfolgenden Fehler zu gewährleisten.
3Welche Methode sollte verwendet werden, um eine einzelne Ergebniszeile abzurufen?
Welche Methode sollte verwendet werden, um eine einzelne Ergebniszeile abzurufen?
Antwort
DB.QueryRow ist speziell dafür ausgelegt, eine einzelne Zeile abzurufen, und gibt ein Row-Objekt (Singular) zurück. Im Gegensatz zu Query, das Rows zurückgibt und eine Iteration mit rows.Next() erfordert, vereinfacht QueryRow den Code, indem es direktes Scannen ermöglicht. Die Fehlerbehandlung erfolgt während des Scan, wobei sql.ErrNoRows anzeigt, dass keine Zeile gefunden wurde.
Wie öffnet man eine Verbindung zu einer Datenbank mit database/sql?
Was gibt die Methode rows.Scan() zurück?
+19 Interview-Fragen
Weitere Go-Interviewthemen
Go-Grundlagen
Go-Datenstrukturen
Go-Interfaces
Fehlerbehandlung
Goroutines-Grundlagen
Channels
Go Modules
HTTP-Server
HTTP-Client
JSON-Kodierung
context-Paket
Testing
Concurrency-Patterns
Synchronisationsprimitive
Go-Web-Frameworks
REST-API-Design
gRPC
Reflection
Speicherverwaltung
Performance-Optimierung
Generics
Go Design Patterns
Microservices
Sicherheit und Authentifizierung
Docker & Containerization
Kubernetes Basics
Fortgeschrittenes Go
CLI-Entwicklung
Meistere Go für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten