
database/sql
database/sql, connections, queries, prepared statements, transactions, connection pooling
1Quelle est la différence principale entre DB.Query et DB.Exec ?
Quelle est la différence principale entre DB.Query et DB.Exec ?
Réponse
DB.Query est utilisé pour exécuter des requêtes SELECT qui retournent des lignes de données, tandis que DB.Exec sert à exécuter des commandes SQL qui ne retournent pas de résultats (INSERT, UPDATE, DELETE). Query retourne un objet Rows qu'il faut parcourir et fermer avec rows.Close(), alors qu'Exec retourne un Result contenant le nombre de lignes affectées et le dernier ID inséré.
2Pourquoi est-il important de fermer l'objet Rows après une requête ?
Pourquoi est-il important de fermer l'objet Rows après une requête ?
Réponse
Fermer Rows avec rows.Close() libère les ressources de la connexion database, permettant à la connexion de retourner dans le pool. Sans fermeture, les connexions restent occupées et le pool peut s'épuiser, causant des blocages. Il est recommandé d'utiliser defer rows.Close() immédiatement après avoir vérifié l'erreur de Query pour garantir la fermeture même en cas d'erreur ultérieure.
3Quelle méthode utiliser pour récupérer une seule ligne de résultat ?
Quelle méthode utiliser pour récupérer une seule ligne de résultat ?
Réponse
DB.QueryRow est conçu spécifiquement pour récupérer une seule ligne et retourne un objet Row (au singulier). Contrairement à Query qui retourne Rows et nécessite une itération avec rows.Next(), QueryRow simplifie le code en permettant un scan direct. La gestion d'erreur se fait lors du Scan, où sql.ErrNoRows indique qu'aucune ligne n'a été trouvée.
Comment ouvrir une connexion à une base de données avec database/sql ?
Que retourne la méthode rows.Scan() ?
+19 questions d'entretien
Autres sujets d'entretien Go
Les bases de Go
Structures de données Go
Interfaces Go
Gestion des erreurs
Goroutines basiques
Channels
Go Modules
Serveur HTTP
Client HTTP
Encodage JSON
Package context
Testing
Patterns de concurrence
Primitives de synchronisation
Frameworks web Go
Design d'API REST
gRPC
Reflection
Gestion mémoire
Optimisation des performances
Generics
Design Patterns Go
Microservices
Sécurité & Authentication
Docker & Containerization
Kubernetes Basics
Go Avancé
Développement CLI
Maîtrise Go pour ton prochain entretien
Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.
Commencer gratuitement