การดู : 0

12/04/2026 18:19น.

EP.15 Go กับ Database - จัดการข้อมูลอย่างมืออาชีพ!

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) ที่เก็บชื่อและราคาสินค้า จากนั้นลองเขียนโค้ดเพื่อเพิ่มข้อมูลสินค้า ดึงข้อมูลสินค้าทั้งหมด อัปเดตราคา และลบสินค้าที่ไม่ต้องการ!