golang mysql query

WBOY
WBOYasal
2023-05-19 13:27:09719semak imbas

Golang ialah bahasa pengaturcaraan yang semakin popular yang cemerlang dalam mengendalikan sejumlah besar data dan prestasi serentak yang tinggi. Pada masa yang sama, MySQL, sebagai sistem pangkalan data hubungan yang popular, sangat serasi dengan Golang. Dalam artikel ini, kami akan meneroka cara untuk melaksanakan pertanyaan MySQL di Golang.

  1. Pasang pemacu MySQL

Sebelum menggunakan Golang untuk menanyakan MySQL, anda perlu memasang pemacu MySQL terlebih dahulu. Pemacu MySQL yang paling biasa digunakan di Golang ialah "mysql", yang boleh dipasang melalui arahan berikut:

go get -u github.com/go-sql-driver/mysql

Perintah ini akan memasang pemacu mysql dalam persekitaran Golang.

  1. Sambung ke pangkalan data MySQL

Sebelum melaksanakan pertanyaan MySQL, anda perlu mewujudkan sambungan dengan pangkalan data terlebih dahulu. Kod berikut boleh digunakan untuk mewujudkan sambungan ke pangkalan data MySQL:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()
}

Dalam kod di atas, kami menggunakan fungsi "sql.Open" untuk membuka pangkalan data MySQL dari Golang dengan parameter berikut:

  • Parameter pertama: Tentukan pemacu pangkalan data yang digunakan, berikut ialah "mysql"
  • Parameter kedua: Tentukan maklumat sambungan pangkalan data MySQL, formatnya ialah "nama pengguna: password@tcp(host :port)/database_name"

    • nama pengguna: nama pengguna pangkalan data MySQL
    • kata laluan: kata laluan pangkalan data MySQL
    • hos :port: hos dan port pangkalan data MySQL No.
    • database_name: Nama pangkalan data MySQL

Selepas melaksanakan pertanyaan, anda perlu tutup sambungan melalui pernyataan "db.Close()".

  1. Laksanakan pertanyaan PILIH

Selepas mewujudkan sambungan, anda boleh menggunakan Golang untuk melaksanakan pertanyaan MySQL. Berikut ialah kod sampel mudah untuk melaksanakan pernyataan pertanyaan SELECT:

rows, err := db.Query("SELECT name, age FROM users WHERE age > ?", 20)
if err != nil {
    panic(err.Error())
}
defer rows.Close()

for rows.Next() {
    var name string
    var age int
    err = rows.Scan(&name, &age)
    if err != nil {
        panic(err.Error())
    }
    fmt.Println(name, age)
}
  • Fungsi "db.Query" menerima pernyataan pertanyaan SQL dan parameternya dan mengembalikan set hasil
  • "rows. Next" menggelung melalui setiap baris data dan fungsi "rows.Scan" mengimbas setiap baris data ke dalam pembolehubah
  • Selepas menyelesaikan pertanyaan, anda perlu memanggil fungsi "rows.Close" untuk menutup iterator set hasil
  1. Lakukan operasi INSERT, UPDATE, DELETE

Di Golang, melakukan INSERT, UPDATE, DELETE dan operasi lain pada asasnya sama seperti melakukan operasi SELECT. Berikut ialah kod sampel:

result, err := db.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "John", 25)
if err != nil {
    panic(err.Error())
}
lastInsertId, _ := result.LastInsertId()
rowsAffected, _ := result.RowsAffected()
fmt.Printf("LastInsertId: %d, RowsAffected: %d
", lastInsertId, rowsAffected)
  • Fungsi "db.Exec" menghantar pernyataan operasi SQL dan parameternya ke pangkalan data MySQL
  • "result.LastInsertId()" fungsi mengembalikan data yang dimasukkan ID kunci utama
  • Fungsi "result.RowsAffected()" mengembalikan bilangan baris yang terjejas
  1. Gunakan pernyataan yang disediakan

di Golang , anda boleh menggunakan pernyataan yang disediakan untuk melaksanakan pertanyaan MySQL. Penyata yang disediakan boleh meningkatkan prestasi pertanyaan kerana pelayan MySQL boleh menyimpan penyataan pertanyaan yang sama apabila melaksanakan berbilang penyataan pertanyaan yang sama, mengurangkan overhed menyusun penyata SQL. Berikut ialah contoh penggunaan pernyataan yang disediakan:

stmt, err := db.Prepare("SELECT name, age FROM users WHERE age > ?")
if err != nil {
    panic(err.Error())
}
defer stmt.Close()

rows, err := stmt.Query(20)
if err != nil {
    panic(err.Error())
}
defer rows.Close()

for rows.Next() {
    var name string
    var age int
    err = rows.Scan(&name, &age)
    if err != nil {
        panic(err.Error())
    }
    fmt.Println(name, age)
}
  • Fungsi "db.Prepare" menyusun pernyataan pertanyaan ke dalam objek pernyataan yang disediakan
  • Dalam objek yang disediakan, "?" digunakan untuk mewakili ruang letak parameter
  • Serupa dengan "db.Query", anda boleh menggunakan fungsi "stmt.Query" untuk melaksanakan pertanyaan praproses
  1. Pertimbangkan Selamat

Keselamatan adalah sangat penting semasa membuat pertanyaan MySQL. Golang menyediakan beberapa amalan terbaik untuk menggunakan pertanyaan MySQL, termasuk:

  • Jangan gunakan penggabungan rentetan untuk membina pernyataan SQL Anda harus menggunakan penyata yang disediakan dan ruang letak parameter
  • Jangan bina pertanyaan secara dinamik. daripada input pengguna kerana ini mungkin mendedahkan pangkalan data
  • Data yang dimasukkan mesti dilepaskan atau diparameterkan untuk mengelakkan serangan suntikan SQL

Amalan terbaik ini boleh mengurangkan risiko serangan seperti suntikan SQL.

Kesimpulan

Dalam artikel ini, kami meneroka cara untuk melaksanakan pertanyaan MySQL di Golang. Selepas memahami kaedah sambungan asas dan sintaks, anda boleh menggunakan Golang untuk menanyakan pangkalan data MySQL dan menggunakan amalan terbaik untuk memastikan keselamatan pertanyaan. Apabila menggunakan Golang untuk pertanyaan MySQL, sentiasa ingat isu keselamatan.

Atas ialah kandungan terperinci golang mysql query. 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
Artikel sebelumnya:penempatan grpc golangArtikel seterusnya:penempatan grpc golang