Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memasukkan Berbilang Baris Data dengan Cekap ke dalam Pangkalan Data Go Menggunakan Penyata Disediakan?

Bagaimanakah Saya Boleh Memasukkan Berbilang Baris Data dengan Cekap ke dalam Pangkalan Data Go Menggunakan Penyata Disediakan?

Mary-Kate Olsen
Lepaskan: 2024-12-23 01:36:26
asal
826 orang telah melayarinya

How Can I Efficiently Insert Multiple Rows of Data into a Go Database Using Prepared Statements?

Sisipan Berbilang Data yang Cekap dalam Go

Memasukkan berbilang baris data ke dalam pangkalan data dalam satu operasi boleh meningkatkan kecekapan dengan ketara. Dalam Go, satu cara biasa untuk mencapai ini adalah melalui penggunaan pernyataan yang disediakan. Walaupun menggunakan penggabungan rentetan seperti yang ditunjukkan dalam soalan anda mungkin kelihatan mudah, ia kurang selamat dan boleh membawa kepada kelemahan suntikan SQL.

Menggunakan Penyata Disediakan

Untuk memasukkan berbilang baris menggunakan penyata yang disediakan, anda boleh mengikuti langkah berikut:

  1. Buat templat pernyataan SQL dengan ruang letak untuk nilai data:
INSERT INTO test(n1, n2, n3) VALUES (?, ?, ?)
Salin selepas log masuk
  1. Sediakan pernyataan menggunakan db.Sediakan kaedah:
stmt, err := db.Prepare(sqlStr)
if err != nil {
    // Handle error
}
Salin selepas log masuk
  1. Bina sekeping nilai untuk setiap baris:
vals := []interface{}{}

for _, dataRow := range data {
    vals = append(vals, dataRow["v1"], dataRow["v2"], dataRow["v3"])
}
Salin selepas log masuk
  1. Laksanakan pernyataan dengan nilai:
res, err := stmt.Exec(vals...)
if err != nil {
    // Handle error
}
Salin selepas log masuk

Pendekatan ini memastikan bahawa pernyataan SQL hanya dihuraikan sekali dan nilai dimasukkan dengan selamat sebagai parameter.

Contoh:

Berikut ialah contoh memasukkan berbilang baris ke dalam jadual "ujian" menggunakan disediakan kenyataan:

import (
    "database/sql"
    "fmt"
)

type DataRow struct {
    v1 string
    v2 string
    v3 string
}

func main() {
    data := []DataRow{
        {v1: "1", v2: "1", v3: "1"},
        {v1: "2", v2: "2", v3: "2"},
        {v1: "3", v2: "3", v3: "3"},
    }

    db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database")
    if err != nil {
        // Handle error
    }

    sqlStr := "INSERT INTO test(n1, n2, n3) VALUES (?, ?, ?)"
    stmt, err := db.Prepare(sqlStr)
    if err != nil {
        // Handle error
    }

    vals := []interface{}{}
    for _, dataRow := range data {
        vals = append(vals, dataRow.v1, dataRow.v2, dataRow.v3)
    }

    res, err := stmt.Exec(vals...)
    if err != nil {
        // Handle error
    }

    affectedRows, err := res.RowsAffected()
    if err != nil {
        // Handle error
    }

    fmt.Printf("Inserted %d rows", affectedRows)
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Berbilang Baris Data dengan Cekap ke dalam Pangkalan Data Go Menggunakan Penyata Disediakan?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan