Zoeken…
Opmerkingen
Zie het officiële Go wiki-artikel SQLDrivers voor een lijst met SQL-databasestuurprogramma's.
De SQL-stuurprogramma's worden geïmporteerd en worden voorafgegaan door _
, zodat ze alleen beschikbaar zijn voor het stuurprogramma.
bevraging
Dit voorbeeld laat zien hoe een database met database/sql
kan worden database/sql
, met als voorbeeld een MySql-database.
package main
import (
"log"
"fmt"
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
dsn := "mysql_username:CHANGEME@tcp(localhost:3306)/dbname"
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatal(err)
}
defer sql.Close()
rows, err := db.Query("select id, first_name from user limit 10")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id int
var username string
if err := rows.Scan(&id, &username); err != nil {
log.Fatal(err)
}
fmt.Printf("%d-%s\n", id, username)
}
}
MySQL
Om MySQL in te schakelen, is een databasestuurprogramma nodig. Bijvoorbeeld github.com/go-sql-driver/mysql .
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Een database openen
Het openen van een database is database-specifiek, hier zijn voorbeelden van enkele databases.
Sqlite 3
file := "path/to/file"
db_, err := sql.Open("sqlite3", file)
if err != nil {
panic(err)
}
MySql
dsn := "mysql_username:CHANGEME@tcp(localhost:3306)/dbname"
db, err := sql.Open("mysql", dsn)
if err != nil {
panic(err)
}
MongoDB: verbinden & invoegen & verwijderen & bijwerken & opvragen
package main import ( "fmt" "time" log "github.com/Sirupsen/logrus" mgo "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) var mongoConn *mgo.Session type MongoDB_Conn struct { Host string `json:"Host"` Port string `json:"Port"` User string `json:"User"` Pass string `json:"Pass"` DB string `json:"DB"` } func MongoConn(mdb MongoDB_Conn) (*mgo.Session, string, error) { if mongoConn != nil { if mongoConn.Ping() == nil { return mongoConn, nil } } user := mdb.User pass := mdb.Pass host := mdb.Host port := mdb.Port db := mdb.DB if host == "" || port == "" || db == "" { log.Fatal("Host or port or db is nil") } url := fmt.Sprintf("mongodb://%s:%s@%s:%s/%s", user, pass, host, port, db) if user == "" { url = fmt.Sprintf("mongodb://%s:%s/%s", host, port, db) } mongo, err := mgo.DialWithTimeout(url, 3*time.Second) if err != nil { log.Errorf("Mongo Conn Error: [%v], Mongo ConnUrl: [%v]", err, url) errTextReturn := fmt.Sprintf("Mongo Conn Error: [%v]", err) return &mgo.Session{}, errors.New(errTextReturn) } mongoConn = mongo return mongoConn, nil } func MongoInsert(dbName, C string, data interface{}) error { mongo, err := MongoConn() if err != nil { log.Error(err) return err } db := mongo.DB(dbName) collection := db.C(C) err = collection.Insert(data) if err != nil { return err } return nil } func MongoRemove(dbName, C string, selector bson.M) error { mongo, err := MongoConn() if err != nil { log.Error(err) return err } db := mongo.DB(dbName) collection := db.C(C) err = collection.Remove(selector) if err != nil { return err } return nil } func MongoFind(dbName, C string, query, selector bson.M) ([]interface{}, error) { mongo, err := MongoConn() if err != nil { return nil, err } db := mongo.DB(dbName) collection := db.C(C) result := make([]interface{}, 0) err = collection.Find(query).Select(selector).All(&result) return result, err } func MongoUpdate(dbName, C string, selector bson.M, update interface{}) error { mongo, err := MongoConn() if err != nil { log.Error(err) return err } db := mongo.DB(dbName) collection := db.C(C) err = collection.Update(selector, update) if err != nil { return err } return nil }
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow