Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengakses Sambungan Pangkalan Data daripada Fungsi dalam Go?

Bagaimana untuk Mengakses Sambungan Pangkalan Data daripada Fungsi dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-10-29 12:01:29685semak imbas

How to Access a Database Connection from a Function in Go?

Merujuk Sambungan Pangkalan Data Terbuka dalam Fungsi dalam Go

Apabila bekerja dengan pangkalan data dalam Go, adalah perkara biasa untuk mewujudkan sambungan ke pangkalan data dalam fungsi utama dan kemudian gunakan sambungan ini sepanjang aplikasi. Walau bagaimanapun, apakah yang berlaku apabila anda ingin merangkum operasi pangkalan data dalam fungsi?

Pertimbangkan senario berikut. Dalam fungsi utama anda, anda membuka sambungan pangkalan data:

<code class="go">func main() {
    db, err := sql.Open("sqlite3", "./house.db")
    checkErr(err)

    ...
}</code>

Kini, anda berminat untuk mencipta fungsi yang menambah baris pada pangkalan data berdasarkan struct yang diluluskan:

<code class="go">func addRow(row Room) error {
    stmt, err := db.Prepare("INSERT INTO Rooms (Name, Size, WindowCount, WallDecorationType, Floor) VALUES(?, ?, ?, ?, ?)")
    _, err = stmt.Exec(row.Name , row.Size , row.WindowCount , row.WallDecorationType , row.Floor)
    return err
}</code>

Tetapi inilah cabarannya: fungsi addRow() tidak mempunyai pengetahuan tentang pembolehubah db yang ditakrifkan dalam fungsi utama.

Cara Mengendalikan Rujukan Sambungan Pangkalan Data

Bergantung berdasarkan sifat aplikasi anda, anda mempunyai beberapa pilihan untuk merujuk sambungan pangkalan data dalam fungsi addRow():

  • Pembolehubah Global: Isytiharkan db sebagai pembolehubah global. Ini bermakna ia boleh diakses di mana-mana sahaja dalam program anda, termasuk fungsi addRow(). Ambil perhatian bahawa menggunakan pembolehubah global harus digunakan dengan berhati-hati.
  • Parameter Fungsi: Lulus sambungan db sebagai parameter kepada fungsi addRow(). Ini memberikan kawalan yang lebih jelas ke atas sambungan dan ia membolehkan anda menggunakan sambungan pangkalan data yang berbeza jika perlu.
<code class="go">func addRow(db *sql.DB, row Room) error</code>
  • Kaedah: Cipta struct yang menguruskan sambungan pangkalan data dan jadikan addRow() kaedah pada struct itu. Pendekatan ini merangkum sambungan pangkalan data dalam struct.
<code class="go">type dbConn struct {
    db *sql.DB
}

func (conn dbConn) addRow(row Room) error</code>

Contoh Penggunaan

Mari kita tunjukkan penggunaan pendekatan pembolehubah global:

<code class="go">var db *sql.DB

func main() {
    db, err := sql.Open("sqlite3", "./house.db")
    checkErr(err)

    // create room Room{}
    err = addRow(room)
    checkErr(err)
}</code>

Dengan mengisytiharkan db sebagai pembolehubah global, ia boleh diakses oleh fungsi addRow() di mana-mana dalam program.

Perlu diingat bahawa pendekatan yang anda pilih harus disesuaikan dengan keperluan khusus anda aplikasi, seni binanya dan pertimbangan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Sambungan Pangkalan Data daripada Fungsi dalam Go?. 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