GoDasturchi
Querying a Single Row

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.

example.go
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.

Hints (0/3)

Key Takeaway

Key Takeaway:

db.QueryRow(...).Scan(...) — bitta qator kutilganda ishlatiladi; natija topilmasa sql.ErrNoRows qaytadi.

NEXT UP

Prepared Statements

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

example.go
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.

Hints (0/3)

Key Takeaway

Key Takeaway:

db.QueryRow(...).Scan(...) — bitta qator kutilganda ishlatiladi; natija topilmasa sql.ErrNoRows qaytadi.

NEXT UP

Prepared Statements