
Database/SQL
Padroneggia l'accesso ai database SQL in Go con il pacchetto database/sql: connessioni, query, transazioni, prepared statements e gestione del pool di connessioni.
1Qual è la differenza principale tra DB.Query e DB.Exec?
Qual è la differenza principale tra DB.Query e DB.Exec?
Risposta
DB.Query viene usato per eseguire query SELECT che restituiscono righe di dati, mentre DB.Exec serve a eseguire comandi SQL che non restituiscono risultati (INSERT, UPDATE, DELETE). Query restituisce un oggetto Rows che deve essere iterato e chiuso con rows.Close(), mentre Exec restituisce un Result contenente il numero di righe interessate e l'ultimo ID inserito.
2Perché è importante chiudere l'oggetto Rows dopo una query?
Perché è importante chiudere l'oggetto Rows dopo una query?
Risposta
Chiudere Rows con rows.Close() libera le risorse della connessione database, consentendo alla connessione di tornare nel pool. Senza chiudere, le connessioni rimangono occupate e il pool può esaurirsi, causando blocchi. Si consiglia di usare defer rows.Close() subito dopo aver verificato l'errore di Query per garantire la chiusura anche se si verifica un errore successivo.
3Quale metodo si dovrebbe usare per recuperare una singola riga di risultati?
Quale metodo si dovrebbe usare per recuperare una singola riga di risultati?
Risposta
DB.QueryRow è progettato specificamente per recuperare una singola riga e restituisce un oggetto Row (al singolare). A differenza di Query, che restituisce Rows e richiede l'iterazione con rows.Next(), QueryRow semplifica il codice consentendo uno scan diretto. La gestione degli errori avviene durante lo Scan, dove sql.ErrNoRows indica che nessuna riga è stata trovata.
Come aprire una connessione a un database con database/sql?
Cosa restituisce il metodo rows.Scan()?
+19 domande da colloquio
Altri argomenti di colloquio Go
Fondamenti di Go
Strutture dati in Go
Interfacce in Go
Gestione degli errori
Goroutine di base
Channels
Go Modules
Server HTTP
Client HTTP
Codifica JSON
Pacchetto context
Testing
Pattern di concorrenza
Primitive di sincronizzazione
Framework web Go
Progettazione di API REST
gRPC
Reflection
Gestione della memoria
Ottimizzazione delle prestazioni
Generics
Go Design Patterns
Microservices
Sicurezza e autenticazione
Docker & Containerization
Kubernetes Basics
Go Avanzato
Sviluppo CLI
Padroneggia Go per il tuo prossimo colloquio
Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.
Inizia gratis