はじめに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するとデータが挿入される。