はじめにGo言語でSQLiteを使えるようにするためにSQLiteのドライバーを取得しておく必要があるが、
いつも使用しているGit Bashでは取得できないため、
下記のURLからgit-sdkをダウンロードして、インストールしておく。
https://github.com/git-for-windows/build-extra/releases
インストール後に
![]()
デスクトップ上にMSYS2のアイコンが出来ているので、
今回はmsys2から操作を行う。
msys2を開いたら、下記のコマンドでGo言語でSQLiteを使えるようにするためのライブラリをインストールする。
#パッケージマネージャを更新する pacman -yS # 事前にGCCを入れる pacman -S gcc go get github.com/mattn/go-sqlite3
今回の作業ディレクトリは~/workspace/sqlにする
Atomで作業ディレクトリ開き、ディレクトリ内でsample.dbを作成する
~/workspace/sql/sample.db
sample.dbと同階層にmain.goを作成し、下記のコードを入力する。
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/mattn/go-sqlite3"
)
func main() {
db, err := sql.Open("sqlite3", "sample.db")
if err != nil {
log.Fatal(err)
}
s := `CREATE TABLE users(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(8),
fname VARCHAR(8),
gender CHAR(1)
);`
res, err := db.Exec(s)
if err != nil {
log.Fatal(err)
}
fmt.Println(res)
}
_ "github.com/mattn/go-sqlite3"は自動入力されないので、手打ちする。
db, err := sql.Open("sqlite3", "sample.db")は、sqlite3を使ってsample.dbを開くという意味である。
sql構文で作成したTABLEを変数sとする。sql構文をgoの中で実行する際は、db.Execを使用する。
msys2を開いてgo run main.goと実行すると、TABLEがsample.goの中に作成される。
次にデータを挿入してみる。
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/mattn/go-sqlite3"
)
func main() {
db, err := sql.Open("sqlite3", "sample.db")
if err != nil {
log.Fatal(err)
}
t := "INSERT INTO users(name,fname,gender) VALUES('ryoko','saito','f')"
if err != nil {
log.Fatal(err)
}
res, err := db.Exec(t)
if err != nil {
log.Fatal(err)
}
fmt.Println(res)
}
INSERT INTO users(name,fname,gender) VALUES('ryoko','saito','f')したものを変数tとしExec(t)して、go run main.goするとデータが挿入される。




