Beberapa driver tersedia tetapi Anda hanya harus mempertimbangkan mereka yang mengimplementasikan database / sql API
- ini menyediakan sintaksis yang bersih dan efisien,
- itu memastikan Anda nantinya dapat mengubah driver tanpa mengubah kode Anda, selain impor dan koneksi.
Dua driver cepat dan andal tersedia untuk MySQL:
Saya telah menggunakan keduanya dalam produksi, program berjalan selama berbulan-bulan dengan nomor koneksi dalam jutaan tanpa kegagalan.
Pengandar basis data SQL lainnya terdaftar di go-wiki .
Impor saat menggunakan MyMySQL:
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Impor saat menggunakan Go-MySQL-Driver:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Menghubungkan dan menutup menggunakan 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
Menghubungkan dan menutup menggunakan Go-MySQL-Driver:
con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()
Pilih satu baris:
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)
Pilih beberapa baris dan bangun array dengan hasil:
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})
}
Memasukkan :
_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)
Anda akan melihat bahwa bekerja di Go with MySQL adalah pengalaman yang menyenangkan: Saya tidak pernah punya masalah, server saya berjalan selama berbulan-bulan tanpa kesalahan atau kebocoran. Fakta bahwa sebagian besar fungsi hanya mengambil sejumlah variabel argumen meringankan tugas yang membosankan dalam banyak bahasa.
Perhatikan bahwa jika, di masa depan, Anda perlu menggunakan driver MySQL lain, Anda hanya perlu mengubah dua baris dalam satu file go: baris yang melakukan impor dan jalur yang membuka koneksi.
SomeThing
. Maksud dari baris itu adalah untuk menunjukkan bagaimana cara mengisi secara langsung struct dengan hasil dari query Anda tanpa variabel perantara.beberapa hal yang perlu diperhatikan contoh pilih 1 baris:
ada yang hilang
row.Next()
dalam contoh ini. perlu memanggilrow.Next()
untuk mengambil baris pertama yang dikembalikan.juga ada beberapa ketidakfleksibelan ke perpustakaan yang dalam beberapa cara mencoba untuk mempromosikan minimalisme data. jika Anda mencoba untuk memilih kolom yang bukan Pindai itu akan menimbulkan kesalahan (bukan hanya peringatan)
sumber