Maison > développement back-end > Golang > Comment accéder à une connexion à une base de données à partir d'une fonction dans Go ?

Comment accéder à une connexion à une base de données à partir d'une fonction dans Go ?

Patricia Arquette
Libérer: 2024-10-29 12:01:29
original
685 Les gens l'ont consulté

How to Access a Database Connection from a Function in Go?

Référencement d'une connexion à une base de données ouverte dans une fonction dans Go

Lorsque vous travaillez avec des bases de données dans Go, il est courant d'établir une connexion à la base de données dans la fonction principale, puis utilisez cette connexion dans toute l'application. Cependant, que se passe-t-il lorsque vous souhaitez encapsuler les opérations de base de données dans une fonction ?

Considérez le scénario suivant. Dans votre fonction principale, vous ouvrez une connexion à la base de données :

<code class="go">func main() {
    db, err := sql.Open("sqlite3", "./house.db")
    checkErr(err)

    ...
}</code>
Copier après la connexion

Maintenant, vous souhaitez créer une fonction qui ajoute des lignes à la base de données en fonction d'une structure transmise :

<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>
Copier après la connexion

Mais c'est là que réside le défi : la fonction addRow() n'a aucune connaissance de la variable db définie dans la fonction principale.

Comment gérer les références de connexion à la base de données

En fonction Selon la nature de votre application, vous disposez de plusieurs options pour référencer la connexion à la base de données au sein de la fonction addRow() :

  • Variable globale : Déclarez db en tant que variable globale. Cela signifie qu'il sera accessible n'importe où dans votre programme, y compris la fonction addRow(). Notez que l'utilisation de variables globales doit être utilisée avec parcimonie.
  • Paramètre de fonction : Passez la connexion à la base de données en tant que paramètre à la fonction addRow(). Cela fournit un contrôle plus explicite sur la connexion et vous permet d'utiliser différentes connexions à la base de données si nécessaire.
<code class="go">func addRow(db *sql.DB, row Room) error</code>
Copier après la connexion
  • Méthode : Créez une structure qui gère le connexion à la base de données et faites de addRow() une méthode sur cette structure. Cette approche encapsule la connexion à la base de données dans la structure.
<code class="go">type dbConn struct {
    db *sql.DB
}

func (conn dbConn) addRow(row Room) error</code>
Copier après la connexion

Exemple d'utilisation

Montrons l'utilisation de l'approche des variables globales :

<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>
Copier après la connexion

En déclarant db comme variable globale, elle devient accessible à la fonction addRow() n'importe où dans le programme.

Gardez à l'esprit que l'approche que vous choisissez doit être adaptée aux exigences spécifiques de votre application, son architecture et ses considérations de performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal