Go

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.

22 domande da colloquio·
Mid-Level
1

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.

2

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.

3

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.

4

Come aprire una connessione a un database con database/sql?

5

Cosa restituisce il metodo rows.Scan()?

+19 domande da colloquio

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