Heim >Backend-Entwicklung >Golang >Wie führe ich native SQL-Abfragen mit Golang aus?

Wie führe ich native SQL-Abfragen mit Golang aus?

WBOY
WBOYOriginal
2024-06-01 10:00:58630Durchsuche

So führen Sie native SQL-Abfragen in Go aus: Importieren Sie die erforderlichen Pakete (z. B. Datenbank/SQL und Datenbanktreiber). Öffnen Sie eine Datenbankverbindung. Bereiten Sie SQL-Anweisungen mit der db.Prepare-Methode vor. Verwenden Sie die Methode stmt.Query, um Abfragen durchzuführen und dynamische Werte bereitzustellen. Verwenden Sie rows.Next und rows.Scan, um die Abfrageergebnisse zu durchlaufen. Schließen Sie die Datenbankverbindung, um Ressourcen freizugeben.

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

Wie führe ich native SQL-Abfragen in Golang aus?

Golang bietet ein leistungsstarkes SQL-Datenbankpaket, das Ihnen die Interaktion mit relationalen Datenbanken über native SQL-Abfragen ermöglicht. Dieses Tutorial führt Sie durch die Ausführung nativer SQL-Abfragen mit Golang und bietet ein praktisches Beispiel.

Importieren Sie die erforderlichen Pakete

Zuerst müssen Sie die erforderlichen Pakete importieren:

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

Hinweis: Verschiedene Datenbanken erfordern ihre eigenen Treiber. Eine Liste der unterstützten Treiber finden Sie unter [godoc](https://godoc.org/database/sql/driver).

Datenbankverbindung öffnen

Als nächstes öffnen Sie eine Datenbankverbindung:

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

Achten Sie darauf, Benutzer, Passwort, Host hinzuzufügen. port und database durch die entsprechenden Werte. 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

SQL-Anweisungen vorbereiten

Um eine SQL-Abfrage vorzubereiten, verwenden Sie die Methode 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)
}

Dadurch wird eine vorkompilierte SQL-Anweisung für die spätere Ausführung erstellt. ? Platzhalter stellt einen dynamischen Wert dar, der während der Ausführung ersetzt wird.

SQL-Abfrage ausführen

Um eine Abfrage mit angegebenen dynamischen Werten auszuführen, verwenden Sie die Methode Query: 🎜
db.Close()
🎜Dadurch wird ein Rows-Objekt zurückgegeben, das die Abfrage enthält Ergebnis. 🎜🎜🎜Abfrageergebnisse verarbeiten🎜🎜🎜Um die Abfrageergebnisse zu durchlaufen, verwenden Sie die Methode 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)
    }
}
🎜🎜Schließen Sie die Datenbankverbindung. 🎜🎜🎜Schließen Sie abschließend die Datenbankverbindung, um Ressourcen freizugeben: 🎜 rrreee🎜🎜Übungsfall 🎜🎜🎜Das Folgende ist ein praktischer Fall, der zeigt, wie man einen Datensatz in die Datenbank einfügt und erhält: 🎜rrreee

Das obige ist der detaillierte Inhalt vonWie führe ich native SQL-Abfragen mit Golang aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn