Rumah > pembangunan bahagian belakang > Golang > Bila dan Mengapa Saya Perlu Menggunakan `db.Exec()` dan Penyata Disediakan dalam Go?

Bila dan Mengapa Saya Perlu Menggunakan `db.Exec()` dan Penyata Disediakan dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-07 22:37:15
asal
988 orang telah melayarinya

When and Why Should I Use `db.Exec()` and Prepared Statements in Go?

Mengapa perlu menggunakan *DB.exec() atau pernyataan yang disediakan dalam Golang?

"Mengapa juga menggunakan db.Exec()"

Sedangkan anda boleh menggunakan db.Exec dan db.Query secara bergantian untuk pernyataan SQL yang sama, mereka menghasilkan keputusan yang berbeza. db.Exec mengembalikan bilangan baris yang terjejas (jika disokong oleh pemandu), manakala db.Query mengembalikan objek baris.

Sebagai contoh, untuk mengira bilangan baris yang dipadamkan dalam pernyataan DELETE:

res, err := db.Exec(`DELETE FROM my_table WHERE expires_at = `, time.Now())
numDeleted, err := res.RowsAffected() // Returns the number of deleted rows
Salin selepas log masuk

Sebagai alternatif (tetapi kurang cekap):

rows, err := db.Query(`DELETE FROM my_table WHERE expires_at =  RETURNING *`, time.Now())
numDeleted := 0
for rows.Next() { numDeleted++ } // Iterate over deleted rows
Salin selepas log masuk

db.Exec juga harus digunakan apabila anda tidak memerlukan hasil pertanyaan, hanya semakan ralat:

if _, err := db.Exec(`<my_sql_query>`); err != nil { panic(err) }
Salin selepas log masuk

"atau penyata yang disediakan di Golang?"

Tuntutan dokumentasi bahawa Go sentiasa menggunakan pernyataan yang disediakan di bawah penutup mungkin tidak betul. Pelaksanaan pemacu nampaknya menentukan sama ada pernyataan baru yang disediakan dibuat untuk setiap panggilan db.Query.

Walau bagaimanapun, memanggil db.Sediakan dan caching db.Stmt yang terhasil boleh meningkatkan prestasi untuk pertanyaan yang kerap dilaksanakan. Rujuk dokumentasi PostgreSQL untuk butiran lanjut: https://www.postgresql.org/docs/current/static/sql-prepare.html

Atas ialah kandungan terperinci Bila dan Mengapa Saya Perlu Menggunakan `db.Exec()` dan Penyata Disediakan dalam Go?. 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