Một vài trình điều khiển có sẵn nhưng bạn chỉ nên xem xét những trình điều khiển triển khai API cơ sở dữ liệu / sql như
- nó cung cấp một cú pháp sạch và hiệu quả,
- nó đảm bảo sau này bạn có thể thay đổi trình điều khiển mà không cần thay đổi mã, ngoài việc nhập và kết nối.
Hai trình điều khiển nhanh và đáng tin cậy có sẵn cho MySQL:
Tôi đã sử dụng cả hai sản phẩm này, các chương trình đang chạy trong nhiều tháng với số lượng kết nối trong hàng triệu mà không gặp sự cố.
Các trình điều khiển cơ sở dữ liệu SQL khác được liệt kê trên go-wiki .
Nhập khi sử dụng MyMySQL:
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Nhập khi sử dụng Go-MySQL-Driver:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Kết nối và đóng bằng MyMySQL:
con, err := sql.Open("mymysql", database+"/"+user+"/"+password)
defer con.Close()
// here you can use the connection, it will be closed when function returns
Kết nối và đóng bằng Go-MySQL-Driver:
con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()
Chọn một hàng:
row := con.QueryRow("select mdpr, x, y, z from sometable where id=?", id)
cb := new(SomeThing)
err := row.Scan(&cb.Mdpr, &cb.X, &cb.Y, &cb.Z)
Chọn nhiều hàng và xây dựng một mảng với kết quả:
rows, err := con.Query("select a, b from item where p1=? and p2=?", p1, p2)
if err != nil { /* error handling */}
items := make([]*SomeStruct, 0, 10)
var ida, idb uint
for rows.Next() {
err = rows.Scan(&ida, &idb)
if err != nil { /* error handling */}
items = append(items, &SomeStruct{ida, idb})
}
Chèn :
_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)
Bạn sẽ thấy rằng làm việc trong Go with MySQL là một trải nghiệm thú vị: Tôi chưa bao giờ gặp sự cố, máy chủ của tôi chạy trong nhiều tháng mà không có lỗi hoặc rò rỉ. Thực tế là hầu hết các hàm chỉ đơn giản là lấy một số lượng đối số khác nhau làm sáng tỏ một nhiệm vụ tẻ nhạt trong nhiều ngôn ngữ.
Lưu ý rằng, trong tương lai, bạn cần sử dụng trình điều khiển MySQL khác, bạn sẽ chỉ phải thay đổi hai dòng trong một tệp: dòng thực hiện nhập và dòng mở kết nối.