
Database/SQL
Domine o acesso a bancos de dados SQL em Go com o pacote database/sql: conexões, consultas, transações, prepared statements e gerenciamento do pool de conexões.
1Qual é a principal diferença entre DB.Query e DB.Exec?
Qual é a principal diferença entre DB.Query e DB.Exec?
Resposta
DB.Query é usado para executar consultas SELECT que retornam linhas de dados, enquanto DB.Exec serve para executar comandos SQL que não retornam resultados (INSERT, UPDATE, DELETE). Query retorna um objeto Rows que deve ser iterado e fechado com rows.Close(), ao passo que Exec retorna um Result contendo o número de linhas afetadas e o último ID inserido.
2Por que é importante fechar o objeto Rows após uma consulta?
Por que é importante fechar o objeto Rows após uma consulta?
Resposta
Fechar Rows com rows.Close() libera os recursos da conexão database, permitindo que a conexão retorne ao pool. Sem fechar, as conexões permanecem ocupadas e o pool pode se esgotar, causando bloqueios. Recomenda-se usar defer rows.Close() imediatamente após verificar o erro de Query para garantir o fechamento mesmo que ocorra um erro posterior.
3Qual método deve ser usado para recuperar uma única linha de resultados?
Qual método deve ser usado para recuperar uma única linha de resultados?
Resposta
DB.QueryRow é projetado especificamente para recuperar uma única linha e retorna um objeto Row (no singular). Ao contrário de Query, que retorna Rows e requer iteração com rows.Next(), QueryRow simplifica o código ao permitir um scan direto. O tratamento de erros ocorre durante o Scan, onde sql.ErrNoRows indica que nenhuma linha foi encontrada.
Como abrir uma conexão com um banco de dados usando database/sql?
O que o método rows.Scan() retorna?
+19 perguntas de entrevista
Outros temas de entrevista Go
Fundamentos de Go
Estruturas de dados em Go
Interfaces em Go
Tratamento de erros
Goroutines básicas
Channels
Go Modules
Servidor HTTP
Cliente HTTP
Codificação JSON
Pacote context
Testing
Padrões de concorrência
Primitivas de sincronização
Frameworks web Go
Design de API REST
gRPC
Reflection
Gerenciamento de memória
Otimização de desempenho
Generics
Go Design Patterns
Microservices
Segurança e autenticação
Docker & Containerization
Kubernetes Basics
Go Avançado
Desenvolvimento de CLI
Domine Go para sua proxima entrevista
Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.
Comece gratis