sqlx
mapping struct/sql : https://github.com/jmoiron/sqlx/ tuto : http://jmoiron.github.io/sqlx/ https://pkg.go.dev/github.com/jmoiron/sqlx
drivers
sqlite
github.com/mattn/go-sqlite3odbc
https://github.com/mattn/go-adodbhttps://godoc.org/github.com/mattn/go-adodb
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=lefichier.mdb"
Other odbc driver
https://github.com/alexbrainman/odbc
import (
_ "github.com/alexbrainman/odbc"
)
mdb := "f:/projets/logics/lealex/encours/src/encours/bdd.mdb"
conn := fmt.Sprintf("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;", mdb)
db, err := sqlx.Open("odbc", conn)
SQL query
INSERT, UPDATE, DELETE : use database/sql.DB.Exec
---------------------------------------------------------------------------------------------------
stmt, err := db.Prepare("INSERT INTO users(name) VALUES(?)")
res, err := stmt.Exec("Dolly")
lastId, err := res.LastInsertId()
rowCnt, err := res.RowsAffected()
SELECT - multiple-Rows Queries
---------------------------------------------------------------------------------------------------
stmt, err := db.Prepare("select id, name from users where id = ?")
defer stmt.Close()
rows, err := stmt.Query(1)
defer rows.Close()
for rows.Next() {
err := rows.Scan(&id, &name)
}
SELECT - Single-Row Queries
---------------------------------------------------------------------------------------------------
var test string
err = db.QueryRow("SELECT current_schema()").Scan(&test)
SELECT - Single value query : github.com/jmoiron/sqlx.DB.Get
---------------------------------------------------------------------------------------------------
stmt_select, err := db.Preparex("select id from ug where code=$1")
defer stmt_select.Close()
var idUG_db int
err = stmt_select.Get(&idUG_db, "XIV-15")