Querying a Single Row
Bitta qatorni so'rash
Faqat bitta qator kutilganda (masalan ID bo'yicha qidirish), db.Query + sikl yozish ortiqcha. db.QueryRow buni bitta qatorda hal qiladi.
var name string
var age int64
err := db.QueryRow("SELECT name, age FROM users WHERE id = ?", int64(1)).Scan(&name, &age)
if err == sql.ErrNoRows {
fmt.Println("bunday foydalanuvchi topilmadi")
return
}
if err != nil {
fmt.Println("xato:", err)
return
}
fmt.Println(name, age)QueryRow(...).Scan(...) — ikkita chaqiruvni zanjirlaydi. Agar hech qanday qator topilmasa, Scan maxsus sql.ErrNoRows xatosini qaytaradi — bu "haqiqiy xato emas, shunchaki natija yo'q" degani, shuning uchun uni alohida (errors.Is yoki oddiy == bilan) tekshirish odat: "Sentinel Errors" darsida ko'rgan naqshning aynan o'zi.
>_ Exercise
ID bo'yicha bitta foydalanuvchini toping.
- •db.QueryRow bilan id=2 bo'yicha name va age'ni oling
- •sql.ErrNoRows holatini alohida tekshiring
- •topilgan qiymatlarni chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
db.QueryRow(...).Scan(...) — bitta qator kutilganda ishlatiladi; natija topilmasa sql.ErrNoRows qaytadi.
NEXT UP
Prepared Statements
$ go run main.go
Kodingizni ishga tushiring