12/04/2026 18:19น.

EP.15 Go กับ Database - จัดการข้อมูลอย่างมืออาชีพ!
#โปรแกรมเมอร์
#CRUD
#การเชื่อมต่อฐานข้อมูล
#Database
#Go
Go กับ Database - จัดการข้อมูลอย่างมืออาชีพ!
อยากเก็บข้อมูลผู้ใช้หรือสินค้าของคุณไว้ในโปรแกรมใช่ไหม? วันนี้เราจะมาเรียนรู้การเชื่อมต่อและจัดการข้อมูลใน ฐานข้อมูล (Database) ด้วย Go แบบง่ายๆ และเป็นระบบ
การเชื่อมต่อฐานข้อมูลด้วย database/sql
ใน Go เรามีแพ็กเกจ database/sql ที่ช่วยให้เราเชื่อมต่อและจัดการข้อมูลในฐานข้อมูลได้อย่างง่ายดาย เช่น การเชื่อมต่อกับ PostgreSQL, MySQL, หรือ SQLite เป็นต้น
ตัวอย่างการเชื่อมต่อ PostgreSQL: go
คัดลอกโค้ด
ในตัวอย่างนี้:
sql.Open("postgres", connStr) ใช้เปิดการเชื่อมต่อไปยังฐานข้อมูล PostgreSQL
defer db.Close() ใช้ปิดการเชื่อมต่อเมื่อโปรแกรมทำงานเสร็จสิ้น
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq" // ใช้ _ เพื่อ import driver ของ PostgreSQL
)
func main() {
connStr := "postgres://user:password@localhost/dbname?sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
fmt.Println("Error connecting to the database:", err)
return
}
defer db.Close() // ปิดการเชื่อมต่อเมื่อใช้งานเสร็จ
fmt.Println("Connected to the database!")
}
การสร้างตารางในฐานข้อมูล
เมื่อเชื่อมต่อสำเร็จแล้ว ลองสร้างตารางเพื่อเก็บข้อมูล เช่น ตารางผู้ใช้งาน
ตัวอย่างการสร้างตาราง:
_, err := db.Exec(`
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
age INT
)
`)
if err != nil {
fmt.Println("Error creating table:", err)
return
}
fmt.Println("Table created successfully!")
การเพิ่มข้อมูล (INSERT) ลงในฐานข้อมูล
เมื่อเรามีตารางแล้ว ลองเพิ่มข้อมูลลงในฐานข้อมูล เช่น เพิ่มข้อมูลของผู้ใช้งานใหม่
ตัวอย่างการเพิ่มข้อมูล:
name := "Alice"
age := 25
_, err = db.Exec("INSERT INTO users (name, age) VALUES ($1, $2)", name, age)
if err != nil {
fmt.Println("Error inserting data:", err)
return
}
fmt.Println("Data inserted successfully!")
การดึงข้อมูล (SELECT) จากฐานข้อมูล
เราสามารถดึงข้อมูลจากตารางเพื่อใช้งานได้ เช่น ดึงข้อมูลผู้ใช้งานทั้งหมด
ตัวอย่างการดึงข้อมูล:
rows, err := db.Query("SELECT id, name, age FROM users")
if err != nil {
fmt.Println("Error retrieving data:", err)
return
}
defer rows.Close()
for rows.Next() {
var id int
var name string
var age int
err = rows.Scan(&id, &name, &age)
if err != nil {
fmt.Println("Error scanning data:", err)
return
}
fmt.Printf("ID: %d, Name: %s, Age: %d\n", id, name, age)
}
การอัปเดตข้อมูล (UPDATE) ในฐานข้อมูล
เมื่อข้อมูลเปลี่ยนแปลง เราสามารถอัปเดตข้อมูลที่มีอยู่แล้วได้ เช่น อัปเดตอายุของผู้ใช้งาน
ตัวอย่างการอัปเดตข้อมูล:
newAge := 26
_, err = db.Exec("UPDATE users SET age = $1 WHERE name = $2", newAge, "Alice")
if err != nil {
fmt.Println("Error updating data:", err)
return
}
fmt.Println("Data updated successfully!")
การลบข้อมูล (DELETE) ออกจากฐานข้อมูล
หากข้อมูลไม่จำเป็นต้องใช้งานแล้ว เราสามารถลบออกจากฐานข้อมูลได้
ตัวอย่างการลบข้อมูล:
_, err = db.Exec("DELETE FROM users WHERE name = $1", "Alice")
if err != nil {
fmt.Println("Error deleting data:", err)
return
}
fmt.Println("Data deleted successfully!")
สรุป
- ใช้ sql.Open เพื่อเชื่อมต่อกับฐานข้อมูล
- ใช้ Exec สำหรับคำสั่ง INSERT, UPDATE, DELETE
- ใช้ Query และ Scan สำหรับการดึงข้อมูล (SELECT)
- ปิดการเชื่อมต่อด้วย defer db.Close()
กิจกรรมสนุกๆ
ลองสร้างตารางสินค้า (products) ที่เก็บชื่อและราคาสินค้า จากนั้นลองเขียนโค้ดเพื่อเพิ่มข้อมูลสินค้า ดึงข้อมูลสินค้าทั้งหมด อัปเดตราคา และลบสินค้าที่ไม่ต้องการ!