
Database/SQL
Опануйте доступ до баз даних SQL у Go за допомогою пакета database/sql: з'єднання, запити, транзакції, prepared statements та керування пулом з'єднань.
1Яка основна різниця між DB.Query і DB.Exec?
Яка основна різниця між DB.Query і DB.Exec?
Відповідь
DB.Query використовується для виконання запитів SELECT, що повертають рядки даних, тоді як DB.Exec призначений для виконання команд SQL, які не повертають результатів (INSERT, UPDATE, DELETE). Query повертає об'єкт Rows, який потрібно перебрати та закрити за допомогою rows.Close(), тоді як Exec повертає Result, що містить кількість змінених рядків і останній вставлений ID.
2Чому важливо закривати об'єкт Rows після запиту?
Чому важливо закривати об'єкт Rows після запиту?
Відповідь
Закриття Rows за допомогою rows.Close() звільняє ресурси з'єднання database, дозволяючи з'єднанню повернутися до pool. Без закриття з'єднання залишаються зайнятими, а pool може вичерпатися, спричиняючи блокування. Рекомендується використовувати defer rows.Close() одразу після перевірки помилки Query, щоб гарантувати закриття навіть у разі наступної помилки.
3Який метод слід використовувати для отримання одного рядка результатів?
Який метод слід використовувати для отримання одного рядка результатів?
Відповідь
DB.QueryRow спеціально розроблений для отримання одного рядка та повертає об'єкт Row (в однині). На відміну від Query, який повертає Rows і вимагає ітерації за допомогою rows.Next(), QueryRow спрощує код, дозволяючи безпосередній scan. Обробка помилок відбувається під час Scan, де sql.ErrNoRows вказує, що жодного рядка не знайдено.
Як відкрити з'єднання з базою даних за допомогою database/sql?
Що повертає метод rows.Scan()?
+19 питань зі співбесід
Інші теми співбесід Go
Основи Go
Структури даних Go
Інтерфейси Go
Обробка помилок
Основи goroutines
Channels
Go Modules
HTTP-сервер
HTTP-клієнт
Кодування JSON
Пакет context
Testing
Патерни конкурентності
Примітиви синхронізації
Веб-фреймворки Go
Проєктування REST API
gRPC
Reflection
Керування пам'яттю
Оптимізація продуктивності
Generics
Go Design Patterns
Microservices
Безпека та автентифікація
Docker & Containerization
Kubernetes Basics
Просунутий Go
Розробка CLI
Опануй Go для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно