Go database

Go database/sql tutorial : http://go-database-sql.org/index.html

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-sqlite3

odbc

https://github.com/mattn/go-adodb
https://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")