Go

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.

22 Interview-Fragen·
Mid-Level
1

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.

2

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.

3

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.

4

Wie öffnet man eine Verbindung zu einer Datenbank mit database/sql?

5

Was gibt die Methode rows.Scan() zurück?

+19 Interview-Fragen

Meistere Go für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten