Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan pangkalan data dalam Go?

Bagaimana untuk menggunakan pangkalan data dalam Go?

PHPz
PHPzasal
2023-05-10 17:48:061414semak imbas

Dengan populariti meluas aplikasi web dan aplikasi kompleks lain di Internet, pangkalan data telah menjadi bahagian yang sangat diperlukan. Go ialah bahasa pengaturcaraan popular yang boleh digunakan untuk aplikasi web dan pembangunan sistem lain. Dalam artikel ini, kami akan meneroka cara menggunakan pangkalan data dalam Go.

  1. Pilih pangkalan data

Sebelum anda mula menggunakan pangkalan data, anda perlu terlebih dahulu memilih pangkalan data yang sesuai untuk aplikasi anda. Go menyokong banyak pangkalan data popular seperti MySQL, PostgreSQL, MongoDB, dll. Anda juga boleh menggunakan perpustakaan ORM (Object Relational Mapper) atau perpustakaan penjana SQL untuk memudahkan interaksi pangkalan data. Pustaka ORM ialah perpustakaan yang memetakan objek ke jadual dalam pangkalan data, manakala pustaka penjana SQL ialah perpustakaan untuk mencipta dan menanyakan pertanyaan SQL. Memilih pangkalan data hendaklah berdasarkan keperluan aplikasi anda dan pemahaman anda tentang kelebihan dan kekurangan pangkalan data yang berbeza.

  1. Pasang pemacu pangkalan data

Setelah pangkalan data dipilih, langkah seterusnya ialah memasang pemacu pangkalan data. Go mempunyai pemacu untuk pelbagai pangkalan data, anda boleh menggunakan pemacu daripada pangkalan data perpustakaan standard/sql Go atau perpustakaan luaran dengan fungsi peringkat lebih tinggi. Adalah penting untuk mendapatkan maklumat yang betul untuk pemandu daripada dokumentasi rasmi pangkalan data. Bergantung pada pangkalan data yang anda pilih, keperluan akan berbeza, jadi sila ambil perhatian tentang beberapa butiran untuk diberi perhatian semasa proses pemasangan.

  1. Mewujudkan sambungan

Sebelum menggunakan pangkalan data, anda perlu mewujudkan sambungan ke pangkalan data. Dalam Go, anda boleh menggunakan kod berikut untuk membuat sambungan ke pangkalan data MySQL:

package main

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

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

    err = db.Ping()
    if err != nil {
        panic(err.Error())
    }

    fmt.Println("Connection established")
}

Dalam contoh ini, kami menggunakan fungsi sql.Open() untuk membuka sambungan pangkalan data MySQL. Dalam fungsi Open(), kami menggunakan pemacu MySQL (github.com/go-sql-driver/mysql dalam kes ini) untuk memberitahu Go nama pangkalan data, nama pengguna, kata laluan dan alamat yang ingin kami sambungkan. Kemudian, kami menggunakan perintah db.Ping() untuk menguji sama ada sambungan ke pangkalan data berjaya untuk memastikan sambungan berjaya. Akhir sekali, gunakan defer db.Close() untuk memastikan sambungan pangkalan data ditutup sebelum program keluar.

  1. Laksanakan pertanyaan

Setelah sambungan ke pangkalan data diwujudkan, anda boleh mula menggunakannya. Untuk melaksanakan pernyataan pertanyaan, anda boleh menggunakan fungsi db.Query() atau db.QueryRow(). Fungsi db.Query() digunakan untuk melaksanakan pertanyaan yang mengembalikan berbilang baris, manakala fungsi db.QueryRow() digunakan untuk melaksanakan pertanyaan yang mengembalikan satu baris hasil.

Berikut ialah contoh untuk melaksanakan pertanyaan:

package main

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

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

    rows, err := db.Query("SELECT * FROM mytable")
    if err != nil {
        panic(err.Error())
    }
    defer rows.Close()

    for rows.Next() {
        var id int
        var name string
        err = rows.Scan(&id, &name)
        if err != nil {
            panic(err.Error())
        }
        fmt.Println("id:", id, "name:", name)
    }

    err = rows.Err()
    if err != nil {
        panic(err.Error())
    }
}

Dalam kod contoh di atas, kami mula-mula melaksanakan pernyataan SELECT menggunakan db.Query() dan menyimpan hasilnya dalam pembolehubah baris. Kami kemudian menggunakan fungsi rows.Close() untuk menutup set hasil. Seterusnya, kami menggunakan rows.Next() untuk menggelung setiap baris dalam set hasil dan menggunakan fungsi rows.Scan() untuk memadankan hasil dengan pembolehubah. Akhir sekali, kami menggunakan fungsi rows.Err() untuk mengendalikan sebarang kemungkinan ralat.

  1. Lakukan operasi sisip, kemas kini dan padam

Selain operasi pertanyaan, pangkalan data juga menyokong operasi sisipan, kemas kini dan padam. Melaksanakan operasi ini dalam Go adalah serupa dengan operasi pertanyaan, anda perlu menggunakan fungsi yang berbeza.

Untuk melakukan operasi sisipan anda boleh menggunakan kod berikut:

res, err := db.Exec("INSERT INTO mytable (name) VALUES (?)", "John")
if err != nil {
    panic(err.Error())
}
lastInsertID, err := res.LastInsertId()
if err != nil {
    panic(err.Error())
}
fmt.Println("Last inserted ID:", lastInsertID)

Untuk melakukan operasi kemas kini anda boleh menggunakan kod berikut:

res, err = db.Exec("UPDATE mytable SET name = ? WHERE id = ?", "John Doe", 1)
if err != nil {
    panic(err.Error())
}
rowsAffected, err := res.RowsAffected()
if err != nil {
    panic(err.Error())
}
fmt.Println("Rows affected:", rowsAffected)

Untuk melakukan operasi pemadaman anda boleh menggunakan Kod berikut:

res, err = db.Exec("DELETE FROM mytable WHERE id = ?", 1)
if err != nil {
    panic(err.Error())
}
rowsAffected, err = res.RowsAffected()
if err != nil {
    panic(err.Error())
}
fmt.Println("Rows affected:", rowsAffected)
  1. Menggunakan transaksi

Menggunakan transaksi pangkalan data adalah sangat penting untuk memastikan integriti pangkalan data apabila membuat sebarang perubahan. Dalam Go, anda boleh menggunakan transaksi menggunakan kod berikut:

tx, err := db.Begin()

stmt, err := tx.Prepare("INSERT INTO mytable (name) VALUES (?)")
if err != nil {
    tx.Rollback()
    panic(err.Error())
}

_, err = stmt.Exec("John")
if err != nil {
    tx.Rollback()
    panic(err.Error())
}

stmt, err = tx.Prepare("UPDATE mytable SET name = ? WHERE id = ?")
if err != nil {
    tx.Rollback()
    panic(err.Error())
}

_, err = stmt.Exec("John Doe", 1)
if err != nil {
    tx.Rollback()
    panic(err.Error())
}

err = tx.Commit()
if err != nil {
    panic(err.Error())
}

Dalam kod di atas, kami mula-mula memulakan transaksi menggunakan fungsi db.Begin(). Kami kemudian menggunakan fungsi tx.Prepare() untuk menyediakan pernyataan SQL untuk dilaksanakan. Seterusnya, kami menggunakan fungsi stmt.Exec() untuk melaksanakan pernyataan SQL. Selepas semua operasi dilakukan, kami melakukan transaksi menggunakan fungsi tx.Commit(). Jika mana-mana operasi gagal, kami menggunakan fungsi tx.Rollback() untuk melancarkan semula semua perubahan.

  1. Rujukan

Dalam artikel ini, kami memperkenalkan cara menggunakan pangkalan data dalam Go. Untuk operasi pangkalan data yang lebih maju, anda boleh menggunakan perpustakaan penjana ORM atau SQL untuk interaksi yang lebih mudah. Untuk mengetahui butiran lanjut tentang menggunakan pangkalan data tertentu, sila rujuk dokumentasi rasmi yang berkaitan dan dokumentasi perpustakaan Go. Berikut ialah beberapa rujukan:

  • Pangkalan Data/SQL untuk Golang: https://golang.org/pkg/database/sql/
  • Go MySQL Driver: https:// github. com/go-sql-driver/mysql
  • Go PostgreSQL driver: https://github.com/lib/pq
  • MongoDB Go driver: https://github .com/mongodb/ pemandu mongo-go

Atas ialah kandungan terperinci Bagaimana untuk menggunakan pangkalan data 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