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