Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk melaksanakan pertanyaan pangkalan data di Golang

Bagaimana untuk melaksanakan pertanyaan pangkalan data di Golang

PHPz
Lepaskan: 2023-04-18 09:44:43
asal
1851 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang cekap, pantas dan berkuasa yang boleh digunakan untuk membina pelbagai aplikasi, terutamanya yang cemerlang dalam pembangunan web. Apabila digunakan bersama dengan pangkalan data, Golang menyediakan beberapa alat yang berkuasa untuk membantu pembangun memanipulasi pangkalan data. Dalam artikel ini, kami akan menumpukan pada cara Golang melaksanakan pertanyaan pangkalan data.

1. Pertanyaan pangkalan data Golang

Terdapat dua cara utama untuk menanyakan pangkalan data di Golang: satu adalah menggunakan pakej pangkalan data/sql yang disediakan dalam perpustakaan standard, dan satu lagi adalah menggunakan rangka kerja ORM Contohnya, GORM, XORM, dsb. Di sini kami akan memperkenalkan cara menggunakan pakej pangkalan data/sql untuk membuat pertanyaan.

pangkalan data/sql ialah pakej dalam pustaka standard Golang untuk mengendalikan pangkalan data hubungan Gunakannya untuk menyambung ke pangkalan data dan menyelesaikan operasi seperti mengimport, memasukkan, mengemas kini dan memadam. Sebelum menggunakan pangkalan data/sql, anda perlu memasang pemacu pangkalan data yang sepadan. Sebagai contoh, jika anda ingin menyambung ke MySQL, anda perlu memasang pemacu MySQL. Pemacu pangkalan data yang biasa digunakan di Golang termasuk: mysql, sqlite, postgres, dll.

2. Golang menyambung ke pangkalan data

Sebelum menggunakan pangkalan data/sql untuk menanyakan pangkalan data, kita mesti menyambung ke pangkalan data terlebih dahulu. Berikut ialah contoh kod untuk menyambung ke pangkalan data MySQL:

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

func main() {
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name?charset=utf8")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()
}
Salin selepas log masuk

Antaranya, fungsi sql.Open() mengembalikan objek pangkalan data db, yang boleh kita gunakan untuk mengendalikan pangkalan data. Perkara lain yang perlu diambil perhatian ialah selepas operasi pangkalan data selesai, pangkalan data perlu ditutup melalui kata kunci tangguh.

3. Data pertanyaan Golang

Selepas berjaya menyambung ke pangkalan data, kami boleh melaksanakan pernyataan SQL melalui objek db untuk menanyakan data. Berikut ialah kod sampel untuk menanyakan sekeping data:

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

type User struct {
    Id       int
    Name     string
    Age      int
}

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

    var (
        id       int
        name     string
        age      int
    )

    err = db.QueryRow("SELECT id, name, age FROM users WHERE id = ?", 1).Scan(&id, &name, &age)
    switch {
    case err == sql.ErrNoRows:
        fmt.Println("没有这条记录!")
    case err != nil:
        panic(err.Error())
    default:
        user := User{Id:id, Name:name, Age:age}
        fmt.Println(user)
    }
}
Salin selepas log masuk

Dalam kod sampel ini, kami mentakrifkan struktur pengguna Pengguna dan menanyakan data dengan id 1 dalam pangkalan data melalui kaedah QueryRow(). Kaedah QueryRow() melaksanakan pertanyaan dan mengimbas keputusannya ke dalam baris data. Di sini, kami menggunakan kaedah Scan() untuk memetakan hasil pertanyaan pangkalan data kepada struktur data Pengguna yang kami takrifkan, dan akhirnya mengeluarkan data.

Begitu juga, kami juga boleh menanyakan berbilang baris data. Berikut ialah kod sampel untuk menanyakan berbilang baris data:

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

type User struct {
    Id       int
    Name     string
    Age      int
}

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

    rows, err := db.Query("SELECT id, name, age FROM users")
    if err != nil {
        panic(err.Error())
    }
    defer rows.Close()

    var users []User
    for rows.Next() {
        var user User
        err := rows.Scan(&user.Id, &user.Name, &user.Age)
        if err != nil {
            panic(err.Error())
        }
        users = append(users, user)
    }

    fmt.Println(users)
}
Salin selepas log masuk

Dalam kod sampel ini, kami menggunakan kaedah Query() untuk menanyakan jadual pengguna dalam pangkalan data dan mengimbas seluruh gelung for dan Kaedah seterusnya() Hasil pertanyaan. Dalam badan gelung, kami mentakrifkan struktur Pengguna dan memetakan hasil pertanyaan pangkalan data kepada struktur melalui kaedah Scan(). Akhir sekali, kami menyimpan hasilnya ke dalam kepingan dan mengeluarkan kepingan itu.

4. Ringkasan

Melalui contoh kod di atas, kita dapat melihat bahawa ia adalah sangat mudah dan cekap untuk menggunakan pakej pangkalan data/sql untuk pertanyaan pangkalan data di Golang. Kami boleh mengendalikan pangkalan data secara fleksibel dan mengendalikan pelbagai keperluan pertanyaan data. Berdasarkan ini, Golang menunjukkan prestasi yang sangat baik dalam pembangunan web. Sudah tentu, untuk mendapatkan pengalaman yang lebih baik, kami juga boleh memilih untuk menggunakan rangka kerja ORM untuk mengendalikan pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pertanyaan pangkalan data di Golang. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan