Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mengakses Sambungan Pangkalan Data Terbuka daripada Fungsi di Golang?
Cara Merujuk Sambungan Pangkalan Data Terbuka daripada Fungsi di Golang
Dalam banyak aplikasi Golang, anda perlu berinteraksi dengan pangkalan data. Biasanya, sambungan pangkalan data dibuka dalam fungsi utama. Walau bagaimanapun, apabila mentakrifkan fungsi yang memerlukan akses kepada pangkalan data, anda mungkin menghadapi isu merujuk kepada sambungan pangkalan data terbuka.
Untuk menyelesaikan isu ini, terdapat beberapa pendekatan yang tersedia:
Pilihan 1: Sambungan Pangkalan Data Global
Satu penyelesaian ialah mengisytiharkan sambungan pangkalan data sebagai pembolehubah global, menjadikannya boleh diakses sepanjang program, termasuk dalam fungsi. Kaedah ini mudah tetapi mungkin tidak sesuai untuk aplikasi kompleks dengan berbilang sambungan pangkalan data.
Pilihan 2: Parameter Fungsi
Pilihan lain adalah untuk lulus sambungan pangkalan data sebagai parameter kepada fungsi. Pendekatan ini memberikan kawalan yang jelas ke atas sambungan pangkalan data yang digunakan dan membolehkan penciptaan fungsi yang boleh berfungsi dengan pangkalan data yang berbeza.
Pilihan 3: Kaedah Fungsi
Sebagai alternatif, anda boleh mentakrifkan fungsi sebagai kaedah dalam struct yang memegang sambungan pangkalan data. Teknik ini menawarkan pendekatan yang lebih berorientasikan objek dan memastikan bahawa fungsi sentiasa mempunyai akses kepada sambungan pangkalan data yang betul.
Contoh Kod:
Sambungan Pangkalan Data Global :
<code class="go">var db *sql.DB func main() { db = sql.Open("sqlite3", "./house.db") room := Room{} err := addRoom(room) if err != nil { // Error handling } } func addRoom(room Room) error { stmt, err := db.Prepare("INSERT INTO Rooms (Name, Size, WindowCount, WallDecorationType, Floor) VALUES(?, ?, ?, ?, ?)") if err != nil { return err } _, err = stmt.Exec(room.Name, room.Size, room.WindowCount, room.WallDecorationType, room.Floor) return err }</code>
Parameter Fungsi:
<code class="go">func addRow(db *sql.DB, row Room) error { stmt, err := db.Prepare("INSERT INTO Rooms (Name, Size, WindowCount, WallDecorationType, Floor) VALUES(?, ?, ?, ?, ?)") if err != nil { return err } _, err = stmt.Exec(row.Name, row.Size, row.WindowCount, row.WallDecorationType, row.Floor) return err }</code>
Kaedah Fungsi:
<code class="go">type dbConn struct { db *sql.DB } func (conn dbConn) addRow(row Room) error { stmt, err := conn.db.Prepare("INSERT INTO Rooms (Name, Size, WindowCount, WallDecorationType, Floor) VALUES(?, ?, ?, ?, ?)") if err != nil { return err } _, err = stmt.Exec(row.Name, row.Size, row.WindowCount, row.WallDecorationType, row.Floor) return err }</code>
The pendekatan terbaik bergantung pada keperluan khusus aplikasi anda dan tahap fleksibiliti dan kawalan yang diingini. Pilihan ini menyediakan pelbagai cara untuk mengakses sambungan pangkalan data terbuka daripada fungsi dalam program Golang.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Sambungan Pangkalan Data Terbuka daripada Fungsi di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!