Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Memasukkan Berbilang Baris Data dengan Cekap ke dalam Pangkalan Data Go Menggunakan Penyata Disediakan?
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:
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 }
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) }
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!