# Go language connect to Mysql tutorial แบบง่ายๆ พร้อมตัวอย่าง Code CRUD
ในยุคดิจิทัลที่ข้อมูลถือเป็นกุญแจสู่การพัฒนาและนวัตกรรมใหม่ๆ ภาษาโปรแกรมมิ่งอย่าง Go หรือที่รู้จักกันในชื่อ Golang ก็ได้เข้ามารับบทบาทสำคัญในงานพัฒนาซอฟต์แวร์เช่นกัน ด้วยประสิทธิภาพที่รวดเร็ว และการจัดการหน่วยความจำที่มีประสิทธิภาพ Go จึงเป็นที่นิยมใช้งานในการพัฒนาในระบบเว็บและคลาวด์
หนึ่งในการใช้งานสำคัญของ Go คือการเชื่อมต่อกับฐานข้อมูล MySQL เพื่อดำเนินการ CRUD (Create, Read, Update, Delete) ซึ่งเป็นพื้นฐานของการจัดการข้อมูลภายในหลายๆ แอพพลิเคชัน ในบทความนี้ เราจะแนะนำถึงการเชื่อมต่อฐานข้อมูล MySQL ด้วยภาษา Go ผ่านตัวอย่างที่จะช่วยให้คุณเข้าใจได้อย่างชัดเจน โดยเราจะตั้งโจทย์เพื่อให้เห็นภาพการใช้งานจริง และท้ายที่สุดคุณจะได้พบว่าการเรียนรู้การเขียนโปรแกรมนั้นไม่ได้ยากอย่างที่คิด และที่ EPT เราพร้อมที่จะเป็นคู่มือให้คุณในการเรียนรู้และพัฒนาทักษะนี้อย่างต่อเนื่อง
ก่อนที่เราจะดำเนินการเขียนโค้ดใดๆ ให้ตรวจสอบว่าคุณได้ติดตั้ง Go และ MySQL บนเครื่องของคุณแล้ว เมื่อเราติดตั้งเสร็จสิ้น เราก็พร้อมที่จะเขียนโปรแกรมเพื่อทำการเชื่อมต่อกันระหว่าง Go กับ MySQL
การเชื่อมต่อเข้ากับฐานข้อมูล MySQL โดยใช้ Go นั้นค่อนข้างง่าย ด้วยการใช้งาน library ชื่อ `database/sql` ร่วมกับ driver เช่น `mysql` หรือ `go-sql-driver`
ตัวอย่างการเชื่อมต่อ:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// ตั้งค่า dataSourceName ด้วยรูปแบบ username:password@protocol(address)/dbname
dsn := "user:password@tcp(localhost:3306)/dbname"
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatal(err)
}
defer db.Close()
// ตรวจสอบการเชื่อมต่อ
err = db.Ping()
if err != nil {
log.Fatal(err)
}
fmt.Println("Successfully connected to the database")
}
ในเซสชันนี้เราจะทำการเช็คการเชื่อมต่อเข้ากับฐานข้อมูล MySQL โดยใช้ `db.Ping()` หากไม่มีปัญหาใดๆ เราจะเห็นข้อความ "Successfully connected to the database" ซึ่งแสดงให้เราเห็นว่าเราเชื่อมต่อฐานข้อมูลได้สำเร็จแล้ว
CRUD ย่อมาจาก Create, Read, Update, และ Delete เป็นพื้นฐานของการดำเนินการกับฐานข้อมูลใดๆ ในที่นี้เราจะเห็นการใช้งานเหล่านี้ผ่านภาษา Go.
Create (การสร้างข้อมูล):
การเพิ่มข้อมูลใหม่ลงในฐานข้อมูล MySQL:
stmt, err := db.Prepare("INSERT INTO Users(name, age) VALUES(?, ?)")
if err != nil {
log.Fatal(err)
}
res, err := stmt.Exec("John Doe", 28)
if err != nil {
log.Fatal(err)
}
Read (การอ่านข้อมูล):
การอ่านหรือเรียกดูข้อมูลที่มีอยู่ในฐานข้อมูล:
rows, err := db.Query("SELECT id, name, age FROM Users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var (
id int
name string
age int
)
if err := rows.Scan(&id, &name, &age); err != nil {
log.Fatal(err)
}
fmt.Printf("id %d name is %s and age is %d\n", id, name, age)
}
Update (การปรับปรุงข้อมูล):
การปรับปรุงข้อมูลที่มีอยู่แล้วด้วยคำสั่ง UPDATE:
stmt, err := db.Prepare("UPDATE Users SET age = ? WHERE id = ?")
if err != nil {
log.Fatal(err)
}
res, err := stmt.Exec(30, 1)
if err != nil {
log.Fatal(err)
}
Delete (การลบข้อมูล):
การลบข้อมูลที่ไม่ต้องการอีกต่อไป:
stmt, err := db.Prepare("DELETE FROM Users WHERE id = ?")
if err != nil {
log.Fatal(err)
}
res, err := stmt.Exec(1)
if err != nil {
log.Fatal(err)
}
การเชื่อมต่อระหว่างภาษา Go และฐานข้อมูล MySQL เป็นเรื่องที่ไม่ยุ่งยาก และสามารถทำได้ด้วย Copy and Paste.
ที่ EPT (Expert-Programming-Tutor) เรามีคอร์สเรียนพร้อมทั้งเนื้อหาและผู้สอนมืออาชีพที่จะทำให้คุณเข้าใจลึกซึ้งถึงการเชื่อมต่อและการจัดการข้อมูลบนฐานข้อมูล ไม่ว่าจะเป็นภาษา Go, Python, Java, หรือแม้แต่การใช้งาน Docker และ Kubernetes ในการจัดวางระบบคลาวด์ ไม่เพียงแค่ทฤษฎีเท่านั้น นักศึกษาของเรายังจะได้รับโปรเจ็กต์จริงๆ เพื่อฝึกหัดและเผชิญหน้ากับปัญหาที่อาจจะเกิดขึ้นในอนาคต
การเขียนโปรแกรมคือการสร้างสระว่ายน้ำของปัญญาและโอกาส ไม่จำเป็นต้องรอให้อนาคตมาถึง เราในฐานะบริษัท EPT พร้อมที่จะเป็นที่ปรึกษาและแหล่งเรียนรู้ที่ดีเยี่ยมสำหรับคุณ ลงมือสร้างโอกาสของคุณเองวันนี้ แล้วคุณจะพบว่า "โลกอนาคต" ของคุณสว่างไสวไปด้วยการเขียนคำสั่งที่เปลี่ยนโลกได้!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM