Prepared Statements
Tayyorlangan so'rovlar
Agar bir xil so'rovni ko'p marta, faqat qiymatlarini o'zgartirib bajarish kerak bo'lsa, uni oldindan tayyorlab ("prepare"), keyin qayta-qayta ishlatish samaraliroq — baza har safar so'rovni qaytadan tahlil qilmaydi.
stmt, err := db.Prepare("INSERT INTO users (name, age) VALUES (?, ?)")
if err != nil {
fmt.Println("xato:", err)
return
}
defer stmt.Close()
names := []struct {
Name string
Age int64
}{
{"Bobur", 25},
{"Malika", 30},
}
for _, n := range names {
if _, err := stmt.Exec(n.Name, n.Age); err != nil {
fmt.Println("xato:", err)
return
}
}
fmt.Println("hammasi qo'shildi")db.Prepare(so'rov) so'rovni bir marta "tayyorlaydi" va qayta ishlatiladigan *sql.Stmt qaytaradi. Keyin uni sikl ichida stmt.Exec(...) bilan xohlagancha marta, turli argumentlar bilan chaqirish mumkin. Bu naqsh ayniqsa ko'p sonli (masalan yuzlab yoki minglab) bir xil shakldagi buyruqlarni bajarishda samaradorlikni oshiradi.
>_ Exercise
Tayyorlangan so'rov bilan bir nechta foydalanuvchi qo'shing.
- •db.Prepare bilan INSERT so'rovini tayyorlang
- •ikkita foydalanuvchini stmt.Exec bilan qo'shing
- •memTable uzunligini (len) chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
db.Prepare bir xil shakldagi so'rovni bir marta tayyorlab, keyin ko'p marta samarali qayta ishlatish imkonini beradi.
NEXT UP
Handling NULL Values
$ go run main.go
Kodingizni ishga tushiring