Go言語にはデフォルトでSQLやSQLライクなデータベースに接続するための インターフェースがデフォルトで用意されている。
http://golang.org/pkg/database/sql/
それに各DB用のドライバーを追加して、データベースに接続する
go-sql-driver/mysql のインストール
$ go get github.com/go-sql-driver/mysql
コード
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:@/my_database")
if err != nil {
panic(err.Error())
}
defer db.Close() // 関数がリターンする直前に呼び出される
rows, err := db.Query("SELECT * FROM users") //
if err != nil {
panic(err.Error())
}
columns, err := rows.Columns() // カラム名を取得
if err != nil {
panic(err.Error())
}
values := make([]sql.RawBytes, len(columns))
// rows.Scan は引数に `[]interface{}`が必要.
scanArgs := make([]interface{}, len(values))
for i := range values {
scanArgs[i] = &values[i]
}
for rows.Next() {
err = rows.Scan(scanArgs...)
if err != nil {
panic(err.Error())
}
var value string
for i, col := range values {
// Here we can check if the value is nil (NULL value)
if col == nil {
value = "NULL"
} else {
value = string(col)
}
fmt.Println(columns[i], ": ", value)
}
fmt.Println("-----------------------------------")
}
}