Cách DELETE dữ liệu từ database MySQL bằng Golang
Hướng dẫn cách kết nối và xóa dữ liệu từ một bảng trong database MySQL bằng ngôn ngữ lập trình Golang.
Trong bài viết này, bạn sẽ học cách kết nối đến một database MySQL và sử dụng Golang để thực hiện truy vấn DELETE, giúp xóa dữ liệu từ một bảng cụ thể trong cơ sở dữ liệu.
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// Kết nối đến database MySQL
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test_db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// Câu lệnh DELETE với Prepared Statement
stmt, err := db.Prepare("DELETE FROM students WHERE id = ? OR age = ?")
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
// Thực hiện câu lệnh DELETE với nhiều tham số
res, err := stmt.Exec(1, 22)
if err != nil {
log.Fatal(err)
}
// Kiểm tra số hàng đã bị xóa
rowsAffected, err := res.RowsAffected()
if err != nil {
log.Fatal(err)
}
fmt.Printf("Đã xóa %d hàng.\n", rowsAffected)
}
Giải thích chi tiết từng dòng code:
sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test_db")
: Kết nối đến database MySQL với thông tin chi tiết về user, password, và địa chỉ database.db.Prepare("DELETE FROM students WHERE id = ? OR age = ?")
: Tạo một Prepared Statement cho câu lệnh DELETE với hai tham sốid
vàage
.stmt.Exec(1, 22)
: Thực thi câu lệnh DELETE với các giá trị tham sốid = 1
vàage = 22
.res.RowsAffected()
: Lấy số lượng hàng đã bị xóa và in ra kết quả.
Yêu cầu hệ thống:
- Golang 1.16 trở lên
- Thư viện:
github.com/go-sql-driver/mysql
Cách cài đặt các thư viện để chạy được đoạn mã Golang trên:
Sử dụng lệnh sau để cài đặt thư viện MySQL driver:
go get -u github.com/go-sql-driver/mysql
Lời khuyên:
- Luôn sử dụng Prepared Statements để tránh SQL Injection.
- Kiểm tra kỹ các tham số đầu vào trước khi thực thi câu lệnh DELETE.