Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan pertanyaan SQL asli menggunakan Golang?

Bagaimana untuk melaksanakan pertanyaan SQL asli menggunakan Golang?

WBOY
WBOYasal
2024-06-01 10:00:58607semak imbas

Cara untuk melaksanakan pertanyaan SQL asli dalam Go: Import pakej yang diperlukan (seperti pangkalan data/sql dan pemacu pangkalan data). Buka sambungan pangkalan data. Sediakan pernyataan SQL menggunakan db.Sediakan kaedah. Gunakan kaedah stmt.Query untuk melaksanakan pertanyaan, memberikan nilai dinamik. Gunakan rows.Next dan rows.Scan untuk mengulangi hasil pertanyaan. Tutup sambungan pangkalan data untuk mengeluarkan sumber.

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

Bagaimana untuk melaksanakan pertanyaan SQL asli di Golang?

Golang menyediakan pakej pangkalan data SQL yang berkuasa yang membolehkan anda berinteraksi dengan pangkalan data hubungan menggunakan pertanyaan SQL asli. Tutorial ini akan membimbing anda tentang cara melaksanakan pertanyaan SQL asli menggunakan Golang dan memberikan contoh praktikal.

Import pakej yang diperlukan

Pertama, anda perlu mengimport pakej yang diperlukan:

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

Nota: Pangkalan data yang berbeza akan memerlukan pemacu mereka sendiri. Lihat [godoc](https://godoc.org/database/sql/driver) untuk mendapatkan senarai pemacu yang disokong.

Buka sambungan pangkalan data

Seterusnya, buka sambungan pangkalan data:

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

Pastikan anda menambah pengguna, kata laluan, hos, port dan pangkalan data dengan nilai yang sepadan. 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

Menyediakan Penyata SQL

Untuk menyediakan pertanyaan SQL, gunakan kaedah Sediakan:

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)
}

Ini akan mencipta pernyataan SQL yang telah disusun sebelumnya untuk pelaksanaan kemudian. ? Pemegang tempat mewakili nilai dinamik yang akan digantikan semasa pelaksanaan.

Lakukan pertanyaan SQL

Untuk melaksanakan pertanyaan dengan nilai dinamik yang ditentukan, gunakan kaedah Query: 🎜
db.Close()
🎜Ini akan mengembalikan objek Rows yang mengandungi pertanyaan hasil. .
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)
    }
}
🎜🎜Kes Amalan 🎜🎜🎜Berikut ialah kes praktikal yang menunjukkan cara memasukkan rekod ke dalam pangkalan data dan mendapatkannya: 🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pertanyaan SQL asli menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn