Maison  >  Article  >  développement back-end  >  Comment exécuter des requêtes SQL natives avec Golang ?

Comment exécuter des requêtes SQL natives avec Golang ?

WBOY
WBOYoriginal
2024-06-01 10:00:58565parcourir

Comment exécuter des requêtes SQL natives dans Go : importez les packages nécessaires (tels que la base de données/sql et les pilotes de base de données). Ouvrez une connexion à la base de données. Préparez les instructions SQL à l'aide de la méthode db.Prepare. Utilisez la méthode stmt.Query pour effectuer des requêtes, en fournissant des valeurs dynamiques. Utilisez rows.Next et rows.Scan pour parcourir les résultats de la requête. Fermez la connexion à la base de données pour libérer les ressources.

如何使用 Golang 执行原生 SQL 查询?

Comment exécuter des requêtes SQL natives dans Golang ?

Golang fournit un puissant package de base de données SQL qui vous permet d'interagir avec des bases de données relationnelles à l'aide de requêtes SQL natives. Ce didacticiel vous expliquera comment exécuter des requêtes SQL natives à l'aide de Golang et fournira un exemple pratique.

Importez les packages nécessaires

Tout d'abord, vous devez importer les packages nécessaires :

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql" // MySQL 驱动程序
)

Remarque : différentes bases de données nécessiteront leurs propres pilotes. Voir [godoc](https://godoc.org/database/sql/driver) pour une liste des pilotes pris en charge.

Ouvrir la connexion à la base de données

Ensuite, ouvrez une connexion à la base de données :

db, err := sql.Open("mysql", "user:password@tcp(host:port)/database")
if err != nil {
    log.Fatal(err)
}

Assurez-vous d'ajouter utilisateur, mot de passe, hôte, port et database par les valeurs correspondantes. user, password, host, portdatabase替换为相应的值。

准备 SQL 语句

要准备 SQL 查询,请使用 Prepare 方法:

stmt, err := db.Prepare("SELECT * FROM users WHERE name = ?")
if err != nil {
    log.Fatal(err)
}

这将创建一个预编译的 SQL 语句,用于稍后执行。?占位符表示将在执行期间替换的动态值。

执行 SQL 查询

要使用指定的动态值执行查询,请使用 Query 方法:

rows, err := stmt.Query("John")
if err != nil {
    log.Fatal(err)
}

这将返回一个 Rows 对象,它包含查询结果。

处理查询结果

要遍历查询结果,请使用 Scan

Préparation des instructions SQL

Pour préparer une requête SQL, utilisez la méthode Prepare :

for rows.Next() {
    var id int
    var name string
    if err := rows.Scan(&id, &name); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("ID: %d, Name: %s\n", id, name)
}

Cela créera une instruction SQL précompilée pour une exécution ultérieure. ? L'espace réservé représente une valeur dynamique qui sera remplacée lors de l'exécution.

Exécuter une requête SQL

Pour exécuter une requête avec des valeurs dynamiques spécifiées, utilisez la méthode Query : 🎜
db.Close()
🎜Cela renverra un objet Rows qui contient la requête résultat. 🎜🎜🎜Traitement des résultats de la requête🎜🎜🎜Pour parcourir les résultats de la requête, utilisez la méthode Scan : 🎜
package main

import (
    "database/sql"
    "fmt"

    _ "github.com/go-sql-driver/mysql" // MySQL 驱动程序
)

func main() {
    db, err := sql.Open("mysql", "user:password@tcp(host:port)/database")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    stmt, err := db.Prepare("INSERT INTO users (name) VALUES (?)")
    if err != nil {
        log.Fatal(err)
    }

    _, err = stmt.Exec("Jane")
    if err != nil {
        log.Fatal(err)
    }

    stmt, err = db.Prepare("SELECT * FROM users WHERE name = ?")
    if err != nil {
        log.Fatal(err)
    }

    rows, err := stmt.Query("Jane")
    if err != nil {
        log.Fatal(err)
    }

    for rows.Next() {
        var id int
        var name string
        if err := rows.Scan(&id, &name); err != nil {
            log.Fatal(err)
        }
        fmt.Printf("ID: %d, Name: %s\n", id, name)
    }
}
🎜🎜Fermez la connexion à la base de données 🎜🎜🎜Enfin, fermez la connexion à la base de données pour libérer les ressources : 🎜 rrreee🎜🎜Cas pratique 🎜🎜🎜Ce qui suit est un cas pratique démontrant comment insérer un enregistrement dans la base de données et l'obtenir : 🎜rrreee

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!

Déclaration:
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