go-sqlite3をちょっこと触る
プログラミング言語の基礎を学んだ後に、次のステップとして触るのがデータベースになります。
今あるソフトウェア開発でデータベースを扱うのが大半だと思います。
今回は、データベースのテーブル作成・データの挿入・データの参照まで軽く書いて見ました。
ドライバーはmattnさんのgo-sqlite3を使わせて頂きました。
先ずは、sqliteからダウンロードしましょう。
ドライバーはGitHubから、直接ダウンロードするのも良いですが、dosプロンプトを開いてコマンドを叩けば落とせるので試してみて下さい。
コマンド
go get github.com/mattn/go-sqlite3
でダウンロード出来るはずです。(便利ですね~)
今回使うドライバーはgcc(C言語のコンパイラ)が必要なのでそちらもダウンロードします。
データベースを確認する為に、DB Browserも一応、入れておきます。
長くて申し訳ありませんが、これで準備は出来ました。
goソース
データベースのデータを格納する為の構造体を用意してあげましょう。
構造体とデータベースの型はきちんと合わせてあげましょう。
メインでデータベースを開きます。
コメントでも書いてありますが、必ずデータベースを閉じるようにしましょう。
あとは、関数を読んでいるだけになります。
crateTable
sql文を用意して、Execで実行してあげるだけです。
DB Browserで作れているか、一応、確認。
実行前
作れていますね。
これは、crateTablel関数を呼び出しただけの動作なので、二回目以降は同じテーブルは付く無いので注意してください。
insertDB
こちらも、テーブルを作成する時と、全く同じですね。
ちゃんと挿入されていますね。
今回は*で検索していますが、本番ではちゃんとカラム名を指定してあげましょう。
Scanで、構造体にデータを挿入してあげます。
あとは、配列に入れて、その配列をデバック用にoutputしています。
配列に入れることで、行単位でデータを取れるので、後々楽だったりします。
実行結果 (省きましたが、insertをもう一回走らせています)
DB Browser
dosプロンプト上だと、レコードが上手くとれていませんね。
DB Browserだと上手く表示出来ているんですけどね。
原因として考えれるのは、sqliteがDATETIME型をサポートしていないので、TEXT型で入れてstring型で受け取ってあげるのが良いかもです。
データベースもいろんな選択肢がありますが、シンプルながら一連の基礎まで使えるsqliteを採用しました。
実際、sqliteはスマホゲームや、比較的軽いデータを扱うwebサービスでも採用されていますので、機能としては十分だと思います。
金融関係だと、Oracleがまだ、主流らしいですけが、まだ触ったことないのでそこら辺は分かりません
web系で、サーバサイドを考えている方はSQLは必ず通る道です。
Goだけやってればいいとは限らないのがツライところですね
最近では、javaScriptのnode.jsでサーバサイドもやってしまうと言った動きもあるそうなので、フロントエンドの方も「ちょっと、node.jsでサーバサイドやってみて」と無茶振りされるかもしれないので、データベース周りは知ってて損は無いと思います。