
Database/SQL
เชี่ยวชาญการเข้าถึงฐานข้อมูล SQL ใน Go ด้วยแพ็กเกจ database/sql: การเชื่อมต่อ, การ query, transaction, prepared statements และการจัดการ connection pool
1ความแตกต่างหลักระหว่าง DB.Query และ DB.Exec คืออะไร?
ความแตกต่างหลักระหว่าง DB.Query และ DB.Exec คืออะไร?
คำตอบ
DB.Query ใช้สำหรับรันคำสั่ง SELECT ที่คืนค่าแถวข้อมูล ในขณะที่ DB.Exec ใช้สำหรับรันคำสั่ง SQL ที่ไม่คืนค่าผลลัพธ์ (INSERT, UPDATE, DELETE) Query คืนค่าอ็อบเจกต์ Rows ที่ต้องวนซ้ำและปิดด้วย rows.Close() ส่วน Exec คืนค่า Result ที่มีจำนวนแถวที่ได้รับผลกระทบและ ID ล่าสุดที่ถูกแทรก
2เหตุใดการปิดอ็อบเจกต์ Rows หลังจากการ query จึงสำคัญ?
เหตุใดการปิดอ็อบเจกต์ Rows หลังจากการ query จึงสำคัญ?
คำตอบ
การปิด Rows ด้วย rows.Close() จะปลดปล่อยทรัพยากรของการเชื่อมต่อ database ทำให้การเชื่อมต่อกลับสู่ pool ได้ หากไม่ปิด การเชื่อมต่อจะยังคงถูกใช้งานอยู่และ pool อาจหมด ส่งผลให้เกิดการบล็อก แนะนำให้ใช้ defer rows.Close() ทันทีหลังจากตรวจสอบ error ของ Query เพื่อรับประกันการปิดแม้จะเกิด error ในภายหลัง
3ควรใช้เมธอดใดเพื่อดึงข้อมูลผลลัพธ์เพียงแถวเดียว?
ควรใช้เมธอดใดเพื่อดึงข้อมูลผลลัพธ์เพียงแถวเดียว?
คำตอบ
DB.QueryRow ออกแบบมาโดยเฉพาะเพื่อดึงข้อมูลเพียงแถวเดียวและคืนค่าอ็อบเจกต์ Row (เอกพจน์) ต่างจาก Query ที่คืนค่า Rows และต้องวนซ้ำด้วย rows.Next() โดย QueryRow ช่วยลดความซับซ้อนของโค้ดด้วยการอนุญาตให้ scan ได้โดยตรง การจัดการ error เกิดขึ้นระหว่าง Scan ซึ่ง sql.ErrNoRows บ่งชี้ว่าไม่พบแถวใด ๆ
จะเปิดการเชื่อมต่อกับฐานข้อมูลด้วย database/sql ได้อย่างไร?
เมธอด rows.Scan() คืนค่าอะไร?
+19 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Go อื่นๆ
พื้นฐาน Go
โครงสร้างข้อมูล Go
อินเทอร์เฟซใน Go
การจัดการข้อผิดพลาด
พื้นฐาน Goroutine
Channels
Go Modules
เซิร์ฟเวอร์ HTTP
ไคลเอนต์ HTTP
การเข้ารหัส JSON
แพ็กเกจ context
Testing
รูปแบบ Concurrency
ไพรมิทีฟการซิงโครไนซ์
เฟรมเวิร์กเว็บ Go
การออกแบบ REST API
gRPC
Reflection
การจัดการหน่วยความจำ
การเพิ่มประสิทธิภาพการทำงาน
Generics
Go Design Patterns
Microservices
ความปลอดภัยและการยืนยันตัวตน
Docker & Containerization
Kubernetes Basics
Go ขั้นสูง
การพัฒนา CLI
เชี่ยวชาญ Go สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี