Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan fungsi operasi pangkalan data dalam bahasa go

Bagaimana untuk melaksanakan fungsi operasi pangkalan data dalam bahasa go

WBOY
WBOYasal
2023-08-26 17:42:23951semak imbas

Bagaimana untuk melaksanakan fungsi operasi pangkalan data dalam bahasa go

Cara melaksanakan fungsi operasi pangkalan data dalam bahasa Go

Bahasa Go, sebagai bahasa pengaturcaraan yang cekap dan ringkas, sangat sesuai untuk membangunkan bahagian belakang pelayan dan operasi pangkalan data. Dalam pembangunan aplikasi sebenar, operasi pangkalan data adalah pautan penting. Hari ini, kami akan memperkenalkan cara untuk melaksanakan fungsi operasi pangkalan data dalam bahasa Go, serta beberapa contoh operasi biasa.

1. Sambungan pangkalan data

Dalam bahasa Go, kami boleh menggunakan perpustakaan pihak ketiga untuk menyambung ke pelbagai jenis pangkalan data. Antaranya, yang paling biasa digunakan ialah pakej "pangkalan data/sql" dalam perpustakaan standard, dan pelbagai pemacu pangkalan data, seperti "go-sqlite3", "mysql" dan "postgres".

Pertama, kita perlu mengimport pakej yang diperlukan:

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

Kemudian, kita boleh menggunakan fungsi "sql.Open" untuk menyambung ke pangkalan data:

db, err := sql.Open("mysql", "user:password@tcp(localhost:8889)/mydb")
if err != nil {
    log.Fatal(err)
}
defer db.Close()

Dalam kod di atas, kami menggunakan pemacu MySQL dan menentukan pangkalan data alamat sambungan dan kelayakan. Jika sambungan berjaya, kita boleh melakukan pelbagai operasi pangkalan data melalui objek "db".

2. Laksanakan pernyataan SQL

Secara amnya, operasi pangkalan data terutamanya termasuk fungsi seperti pertanyaan, sisip, kemas kini dan padam. Di bawah ialah beberapa contoh operasi pangkalan data biasa.

  1. Data pertanyaan
rows, err := db.Query("SELECT * FROM users")
if err != nil {
    log.Fatal(err)
}
defer rows.Close()

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

err = rows.Err()
if err != nil {
    log.Fatal(err)
}

Dalam kod di atas, kami melaksanakan pernyataan SELECT melalui fungsi "db.Query" dan mendapatkan hasil pertanyaan melalui "rows.Next" dan "rows.Scan". Perlu diingatkan bahawa kita perlu menggunakan "defer rows.Close()" untuk memastikan sumber dikeluarkan selepas menggunakan hasil pertanyaan.

  1. Masukkan data
stmt, err := db.Prepare("INSERT INTO users(name) VALUES(?)")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

res, err := stmt.Exec("John")
if err != nil {
    log.Fatal(err)
}

id, err := res.LastInsertId()
if err != nil {
    log.Fatal(err)
}

fmt.Println("Inserted record ID:", id)

Dalam kod di atas, kami menggunakan fungsi "db.Prepare" untuk menyediakan pernyataan INSERT dan "stmt.Exec" untuk melaksanakan operasi sisipan. Kemudian, kita boleh mendapatkan ID yang sepadan dengan rekod yang dimasukkan melalui "res.LastInsertId".

  1. Kemas kini data
stmt, err := db.Prepare("UPDATE users SET name=? WHERE id=?")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

res, err := stmt.Exec("John Smith", 1)
if err != nil {
    log.Fatal(err)
}

rowsAffected, err := res.RowsAffected()
if err != nil {
    log.Fatal(err)
}

fmt.Println("Rows affected:", rowsAffected)

Dalam kod di atas, kami menyediakan kenyataan KEMASKINI melalui fungsi "db.Prepare" dan menggunakan "stmt.Exec" untuk melaksanakan operasi kemas kini. Kami kemudiannya boleh mendapatkan bilangan baris yang terjejas melalui "res.RowsAffected".

  1. Padam data
stmt, err := db.Prepare("DELETE FROM users WHERE id=?")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

res, err := stmt.Exec(1)
if err != nil {
    log.Fatal(err)
}

rowsAffected, err := res.RowsAffected()
if err != nil {
    log.Fatal(err)
}

fmt.Println("Rows affected:", rowsAffected)

Dalam kod di atas, kami menyediakan kenyataan DELETE melalui fungsi "db.Prepare" dan menggunakan "stmt.Exec" untuk melaksanakan operasi padam. Begitu juga, kita boleh mendapatkan bilangan baris yang terjejas melalui "res.RowsAffected".

3. Pemprosesan transaksi

Dalam pembangunan aplikasi sebenar, pemprosesan transaksi adalah fungsi yang sangat penting. Dalam bahasa Go, kita boleh menggunakan "db.Begin" untuk memulakan transaksi dan "tx.Commit" untuk melakukan transaksi. Jika ralat berlaku semasa pemprosesan transaksi, kami boleh menggunakan "tx.Rollback" untuk melancarkan transaksi.

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}

stmt, err := tx.Prepare("INSERT INTO users(name) VALUES(?)")
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}
defer stmt.Close()

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

err = tx.Commit()
if err != nil {
    log.Fatal(err)
}

Dalam kod di atas, kami menggunakan "db.Begin" untuk memulakan transaksi dan melakukan operasi sisipan dalam transaksi. Jika ralat berlaku, kami menggunakan "tx.Rollback" untuk melancarkan transaksi jika tidak, kami menggunakan "tx.Commit" untuk melakukan transaksi.

Ringkasan:

Melalui pengenalan artikel ini, kami telah mempelajari cara melaksanakan fungsi operasi pangkalan data dalam bahasa Go dan menunjukkan beberapa contoh operasi pangkalan data biasa. Perlu dinyatakan bahawa pelbagai jenis pangkalan data boleh disambungkan dengan mudah menggunakan pakej "pangkalan data/sql" dan pemacu pangkalan data yang sesuai. Saya harap artikel ini akan membantu anda melaksanakan operasi pangkalan data dalam bahasa Go!

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi operasi pangkalan data dalam bahasa 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