Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk melaksanakan pertanyaan SQL asli menggunakan Golang?
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.
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 pangkalan data
dengan nilai yang sepadan. user
, password
, host
, port
和database
替换为相应的值。
准备 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 kaedahSediakan
: 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 kaedahQuery
: 🎜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!