Bagaimana untuk melaksanakan pertanyaan SQL asli menggunakan Golang?

WBOY
Lepaskan: 2024-06-01 10:00:58
asal
602 orang telah melayarinya

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 驱动程序
)
Salin selepas log masuk

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)
}
Salin selepas log masuk

Pastikan anda menambah pengguna, kata laluan, hos, < Gantikan kod>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)
}
Salin selepas log masuk

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

执行 SQL 查询

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

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

这将返回一个 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)
}
Salin selepas log masuk

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()
Salin selepas log masuk
🎜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)
    }
}
Salin selepas log masuk
🎜🎜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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!