Querying Multiple Rows
Ko'p qatorni so'rash
Bir nechta qator qaytaradigan SELECT uchun db.Query ishlatiladi. Natija — *sql.Rows, uni for rows.Next() bilan qatorma-qator o'qiysiz ("Reading Files Line by Line" darsidagi bufio.Scannerga o'xshash naqsh).
rows, err := db.Query("SELECT id, name, age FROM users")
if err != nil {
fmt.Println("xato:", err)
return
}
defer rows.Close() // HAR DOIM yoping, aks holda ulanish "sizib qoladi"!
for rows.Next() {
var id, age int64
var name string
if err := rows.Scan(&id, &name, &age); err != nil {
fmt.Println("scan xatosi:", err)
return
}
fmt.Println(id, name, age)
}rows.Scan(&id, &name, &age) — joriy qatorning ustunlarini, aynan SELECT'dagi tartibda, berilgan o'zgaruvchilarga pointer orqali yozadi. defer rows.Close() — bu darsning eng muhim qoidasi: uni unutish, ulanishni butun sikl davomida band qilib qo'yadi ("connection leak"), va oxir-oqibat ulanishlar tugab qolishi mumkin.
>_ Exercise
Barcha foydalanuvchilarni o'qib chiqing.
- •db.Query bilan "SELECT id, name, age FROM users" ni bajaring
- •for rows.Next() bilan har bir qatorni Scan qiling
- •har birini "id name age" ko'rinishida chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
db.Query + rows.Next()/Scan() — ko'p qatorli natijalarni o'qishning standart naqshi; rows.Close()ni hech qachon unutmang.
NEXT UP
Querying a Single Row
$ go run main.go
Kodingizni ishga tushiring