Go

Database/SQL

Opanuj dostęp do baz danych SQL w Go za pomocą pakietu database/sql: połączenia, zapytania, transakcje, prepared statements i zarządzanie pulą połączeń.

22 pytań z rozmów·
Mid-Level
1

Jaka jest główna różnica między DB.Query a DB.Exec?

Odpowiedź

DB.Query służy do wykonywania zapytań SELECT, które zwracają wiersze danych, podczas gdy DB.Exec służy do wykonywania poleceń SQL, które nie zwracają wyników (INSERT, UPDATE, DELETE). Query zwraca obiekt Rows, który należy iterować i zamknąć za pomocą rows.Close(), natomiast Exec zwraca Result zawierający liczbę zmienionych wierszy i ostatnie wstawione ID.

2

Dlaczego ważne jest zamknięcie obiektu Rows po zapytaniu?

Odpowiedź

Zamknięcie Rows za pomocą rows.Close() zwalnia zasoby połączenia database, umożliwiając powrót połączenia do pool. Bez zamknięcia połączenia pozostają zajęte, a pool może się wyczerpać, powodując blokady. Zaleca się używanie defer rows.Close() bezpośrednio po sprawdzeniu błędu Query, aby zagwarantować zamknięcie nawet w przypadku późniejszego błędu.

3

Której metody należy użyć, aby pobrać pojedynczy wiersz wyników?

Odpowiedź

DB.QueryRow jest zaprojektowany specjalnie do pobierania pojedynczego wiersza i zwraca obiekt Row (liczba pojedyncza). W przeciwieństwie do Query, które zwraca Rows i wymaga iteracji za pomocą rows.Next(), QueryRow upraszcza kod, umożliwiając bezpośredni scan. Obsługa błędów odbywa się podczas Scan, gdzie sql.ErrNoRows oznacza, że nie znaleziono żadnego wiersza.

4

Jak otworzyć połączenie z bazą danych za pomocą database/sql?

5

Co zwraca metoda rows.Scan()?

+19 pytań z rozmów

Opanuj Go na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo