Go

Database/SQL

Опануйте доступ до баз даних SQL у Go за допомогою пакета database/sql: з'єднання, запити, транзакції, prepared statements та керування пулом з'єднань.

22 питань зі співбесід·
Mid-Level
1

Яка основна різниця між DB.Query і DB.Exec?

Відповідь

DB.Query використовується для виконання запитів SELECT, що повертають рядки даних, тоді як DB.Exec призначений для виконання команд SQL, які не повертають результатів (INSERT, UPDATE, DELETE). Query повертає об'єкт Rows, який потрібно перебрати та закрити за допомогою rows.Close(), тоді як Exec повертає Result, що містить кількість змінених рядків і останній вставлений ID.

2

Чому важливо закривати об'єкт Rows після запиту?

Відповідь

Закриття Rows за допомогою rows.Close() звільняє ресурси з'єднання database, дозволяючи з'єднанню повернутися до pool. Без закриття з'єднання залишаються зайнятими, а pool може вичерпатися, спричиняючи блокування. Рекомендується використовувати defer rows.Close() одразу після перевірки помилки Query, щоб гарантувати закриття навіть у разі наступної помилки.

3

Який метод слід використовувати для отримання одного рядка результатів?

Відповідь

DB.QueryRow спеціально розроблений для отримання одного рядка та повертає об'єкт Row (в однині). На відміну від Query, який повертає Rows і вимагає ітерації за допомогою rows.Next(), QueryRow спрощує код, дозволяючи безпосередній scan. Обробка помилок відбувається під час Scan, де sql.ErrNoRows вказує, що жодного рядка не знайдено.

4

Як відкрити з'єднання з базою даних за допомогою database/sql?

5

Що повертає метод rows.Scan()?

+19 питань зі співбесід

Опануй Go для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно