Windowsバッチ

WindowsバッチでSQLiteのデータベースの値を取得する方法

はじめに

Windowsバッチでもデータベースの値を取得することができます。

今回、WindowsバッチでSQLiteのデータベースの値を取得する方法を解説します。

ただし、今回解説する方法はWindows上に存在するDBの値を取得する方法に限りますので、
別サーバー上のDBの値を取得する方法ではないのでご注意ください。

サンプルコマンド

まずサンプルとして、以下の情報のときsample_tableのvalueを取得する例をあげます。

SQLite起動exeファイル:sqlite3.exe
DBファイル:sampleDb.sqlite
取得したいテーブル:sample_table
取得したいカラム:value

構文

1. SQL実行コマンド

SQLite起動exeファイルへDBファイルとSQL文を引数として渡すことでSQLの実行結果を取得することができます。

SQLite起動exeファイル “DBファイル” “SQL文”

各ファイルのパスですが、実行するbatファイルからの相対パスもしくは絶対パスのどちらも指定することが可能です。

上記コマンドを実行すると、SQL文の結果が戻り値として返却されます。

2. コマンド実行結果の取得

まず、for文を使用するときは以下のコマンドをあらかじめ実行します。

setlocal enabledelayedexpansion

ERRORLEVELコマンドを使用してエラー判定したいときなどに、このコマンドがないと正常終了してもエラーとしてリターンコードが返却されてしまいます。

理由としては、for文を実行している間にERRORLEVELコマンドが実行されるためです。

まあここはfor文を使うときはおまじないと思っていただければと思います。

なくても動きますが、for文を使用するときは記載するくせをつけましょう。

次にfor文の解説をします。

for /f “usebackq delims=” %%a in (コマンド) do set String=%%a

各オプションは以下の役割をしてます。

オプション 役割
/f コマンドの実行結果を行単位で変数に読み込み繰り返し処理が行えるオプションです。
delims=” デリミタ(区切り)を無効にする。
usebackq=コマンド `(バッククォート)で囲まれた文字列をコマンドとして実行する。

for文でコマンドを実行し、戻り値を%%aに一時的に格納し、Stringに代入しているというイメージです。

最後にもう一度サンプルプログラムをのせておきます。

ぜひ活用してみてください。