Ett fåtal drivrutiner är tillgängliga men du bör bara överväga de som implementerar databasen/sql API som
- det ger en ren och effektiv syntax,
- det säkerställer att du senare kan ändra drivrutinen utan att ändra din kod, förutom import och anslutning.
Två snabba och pålitliga drivrutiner finns tillgängliga för MySQL :
Jag har använt båda i produktionen, program körs i månader med anslutningsnummer i miljoner utan att misslyckas.
Andra SQL-databasdrivrutiner finns på go-wiki .
Importera när du använder MyMySQL :
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Importera när du använder Go-MySQL-drivrutin:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Ansluter och stänger med 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
Ansluter och stänger med Go-MySQL-drivrutinen:
con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()
Välj en rad :
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)
Välj flera rader och bygg en array med resultat :
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})
}
Infoga:
_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)
Du kommer att se att det är en härlig upplevelse att arbeta i Go med MySQL:jag aldrig hade ett problem, mina servrar körs i månader utan fel eller läckor. Det faktum att de flesta funktioner helt enkelt tar ett varierande antal argument underlättar en uppgift som är tråkig på många språk.
Observera att om du i framtiden behöver använda en annan MySQL-drivrutin behöver du bara ändra två rader i en fil:raden som gör importen och raden som öppnar anslutningen.