Referenzieren einer offenen Datenbankverbindung innerhalb einer Funktion in Go
Bei der Arbeit mit Datenbanken in Go ist es üblich, eine Verbindung zur Datenbank herzustellen in der Hauptfunktion und nutzen Sie diese Verbindung dann in der gesamten Anwendung. Was passiert jedoch, wenn Sie Datenbankoperationen innerhalb einer Funktion kapseln möchten?
Stellen Sie sich das folgende Szenario vor. In Ihrer Hauptfunktion öffnen Sie eine Datenbankverbindung:
<code class="go">func main() { db, err := sql.Open("sqlite3", "./house.db") checkErr(err) ... }</code>
Jetzt möchten Sie eine Funktion erstellen, die der Datenbank Zeilen basierend auf einer übergebenen Struktur hinzufügt:
<code class="go">func addRow(row Room) error { stmt, err := db.Prepare("INSERT INTO Rooms (Name, Size, WindowCount, WallDecorationType, Floor) VALUES(?, ?, ?, ?, ?)") _, err = stmt.Exec(row.Name , row.Size , row.WindowCount , row.WallDecorationType , row.Floor) return err }</code>
Aber hier liegt die Herausforderung: Die Funktion addRow() kennt die in der Hauptfunktion definierte DB-Variable nicht.
Wie man mit Datenbankverbindungsreferenzen umgeht
Abhängig Abhängig von der Art Ihrer Anwendung haben Sie mehrere Möglichkeiten, die Datenbankverbindung innerhalb der Funktion addRow() zu referenzieren:
<code class="go">func addRow(db *sql.DB, row Room) error</code>
<code class="go">type dbConn struct { db *sql.DB } func (conn dbConn) addRow(row Room) error</code>
Beispielverwendung
Lassen Sie uns die Verwendung des globalen Variablenansatzes demonstrieren:
<code class="go">var db *sql.DB func main() { db, err := sql.Open("sqlite3", "./house.db") checkErr(err) // create room Room{} err = addRow(room) checkErr(err) }</code>
Durch die Deklaration von db als globale Variable wird die Funktion addRow() an einer beliebigen Stelle im Programm darauf zugreifen können.
Denken Sie daran, dass der von Ihnen gewählte Ansatz auf die spezifischen Anforderungen Ihres Unternehmens zugeschnitten sein sollte Anwendung, ihre Architektur und Leistungsaspekte.
Das obige ist der detaillierte Inhalt vonWie greife ich über eine Funktion in Go auf eine Datenbankverbindung zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!