Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Berkongsi Pengendali Sambungan MySQL Antara Pengendali HTTP Go?

Bagaimana untuk Berkongsi Pengendali Sambungan MySQL Antara Pengendali HTTP Go?

Linda Hamilton
Lepaskan: 2024-11-12 22:20:02
asal
874 orang telah melayarinya

How to Share a MySQL Connection Handle Between Go HTTP Handlers?

Mengurus Sambungan MySQL dalam Pengendali HTTP Go

Pakej pangkalan data/sql dalam Go mengendalikan sambungan pangkalan data dan mengurus pengumpulan sambungan secara automatik. Apabila menggunakan sql.Open(), ia mengembalikan pemegang yang menguruskan kolam sambungan. Pemegang ini mewujudkan sambungan baharu mengikut keperluan, memastikan sentiasa ada sambungan tersedia untuk operasi pangkalan data.

Berkongsi Pemegang Sambungan Pangkalan Data

Dalam kod anda, anda telah mencipta db pembolehubah global jenis *sql.DB dalam fungsi main(). Pembolehubah ini mewakili pemegang kolam sambungan. Untuk berkongsinya dengan pengendali HTTP, anda boleh menghantar pemegang db sebagai parameter kepada fungsi pengendali.

Menggunakan Pemegang Sambungan dalam Pengendali HTTP

Dalam HomeHandler fungsi, anda boleh mengakses sambungan pangkalan data dengan menggunakan pemegang db yang diluluskan sebagai a parameter:

import (
    "database/sql"
    "fmt"
)

func HomeHandler(w http.ResponseWriter, r *http.Request, db *sql.DB) {
    var msg string
    err := db.QueryRow("SELECT msg FROM hello WHERE page=?", "home").Scan(&msg)
    if err != nil {
        fmt.Fprintf(w, "Database Error!")
    } else {
        fmt.Fprintf(w, msg)
    }
}
Salin selepas log masuk

Pendaftaran Pengendali HTTP

Dalam fungsi main(), apabila mendaftar pengendali HTTP, anda boleh menghantar pemegang db sebagai hujah:

import (
    "github.com/gorilla/mux"
)

func main() {
    fmt.Println("starting up")

    db, err := sql.Open("mysql", "root@unix(/tmp/mysql.sock)/mydb")
    if err != nil {
        log.Fatalf("Error on initializing database connection: %s", err.Error())
    }
    
    r := mux.NewRouter()
    r.HandleFunc("/", HomeHandler(db)) // Pass the db handle as an argument to the handler

    http.Handle("/", r)
    http.ListenAndServe(":8080", nil)
}
Salin selepas log masuk

Dengan mengikuti langkah-langkah ini, anda boleh berkongsi sambungan MySQL antara gorouti HTTP dalam Go dengan berkesan. Pengumpulan sambungan automatik pakej pangkalan data/sql memastikan prestasi optimum dan pengurusan sumber.

Atas ialah kandungan terperinci Bagaimana untuk Berkongsi Pengendali Sambungan MySQL Antara Pengendali HTTP Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan