SQLiteには、.NET Framework 版があります。
これを、PowerShellから操作する方法を以下に記します。
.NET Framework版のSQLiteは以下のURLからダウンロードすることができます。
本資料では、Windows 10 64bit を使用し、.NET Framework版のSQLiteを操作します。
Windows10に標準搭載されている、.NET Framework 4.6対応版をダウンロードして使用することにします。
本資料では、以下の画像内で&color(red){赤}で囲んだファイルをダウンロードして使用しました。
sqlite-netFx46-static-binary-x64-2015-1.0.108.0.zip
今回は、テスト的に動作させるため、すべてデスクトップで作業を行います。
以下のスクリプトをCut&PasteでPowerShellに貼り付ければ動作します。
# System.Data.sqlite.dllのロード $asm = [System.Reflection.Assembly]::LoadFile("${HOME}\Desktop\SQLite\System.Data.sqlite.dll") # SQLiteへの接続およびSQLステートメント発行用のSystem.Data.SQLite.SQLiteCommandの生成 $sqlite = New-Object System.Data.SQLite.SQLiteConnection $sqlite.ConnectionString = "Data Source = ${HOME}\Desktop\SQLite\testdb.sqlite3" $sqlcmd = New-Object System.Data.SQLite.SQLiteCommand $sqlcmd.Connection = $sqlite $sqlite.Open() # SQLiteのバージョン表示 $sql = "SELECT sqlite_version()" $sqlcmd.CommandText = $sql $rs = $sqlcmd.ExecuteReader() while ($rs.Read()){ $rs[0] } # SQLiteCommandの破棄 # これをしないと、以下のSQL発行で以下の例外メッセージが表示され中断されます。 # "DataReader already active on this command" $sqlcmd.Dispose() $sql = "CREATE TABLE t1 (name, ostype)" $sqlcmd.CommandText = $sql $ret = $sqlcmd.ExecuteNonQuery() # INSERT実行 $ins_data = @(@("Windows10","Windows"),@("Ubuntu","Linux"),@("FreeBSD","BSD")) $ins_data | % { $name =$_[0]; $ostype=$_[1]; $sql="INSERT INTO t1 VALUES('${name}','${ostype}')" $sqlcmd.CommandText = $sql $ret = $sqlcmd.ExecuteNonQuery() } # SELECT実行および表示 $sql = "SELECT * FROM t1" $sqlcmd.CommandText = $sql $rs = $sqlcmd.ExecuteReader() while ($rs.Read()){ Write-Host ("|{0,-12}|{1,-12}|" -f $rs[0], $rs[1]) } # SQLiteの切断 $sqlcmd.Dispose() $sqlite.Close()
上記のスクリプトを実際に実行したときの出力です。(Cut&Pasteしました。)
PS C:\> # System.Data.sqlite.dllのロード PS C:\> $asm = [System.Reflection.Assembly]::LoadFile("${HOME}\Desktop\SQLite\System.Data.sqlite.dll") PS C:\> PS C:\> # SQLiteへの接続およびSQLステートメント発行用のSystem.Data.SQLite.SQLiteCommandの生成 PS C:\> $sqlite = New-Object System.Data.SQLite.SQLiteConnection PS C:\> $sqlite.ConnectionString = "Data Source = ${HOME}\Desktop\SQLite\testdb.sqlite3" PS C:\> $sqlcmd = New-Object System.Data.SQLite.SQLiteCommand PS C:\> $sqlcmd.Connection = $sqlite PS C:\> $sqlite.Open() PS C:\> PS C:\> # SQLiteのバージョン表示 PS C:\> $sql = "SELECT sqlite_version()" PS C:\> $sqlcmd.CommandText = $sql PS C:\> $rs = $sqlcmd.ExecuteReader() PS C:\> while ($rs.Read()){ >> $rs[0] >> }
SQLiteのバージョンが表示されました。
3.22.0 PS C:\> PS C:\> # SQLiteCommandの破棄 PS C:\> # これをしないと、以下のSQL発行で以下の例外メッセージが表示され中断されます。 PS C:\> # "DataReader already active on this command" PS C:\> $sqlcmd.Dispose() PS C:\> $sql = "CREATE TABLE t1 (name, ostype)" PS C:\> $sqlcmd.CommandText = $sql PS C:\> $ret = $sqlcmd.ExecuteNonQuery() PS C:\>
INSERTを実行します。
PS C:\> # INSERT実行 PS C:\> $ins_data = @(@("Windows10","Windows"),@("Ubuntu","Linux"),@("FreeBSD","BSD")) PS C:\> $ins_data | % { >> $name =$_[0]; >> $ostype=$_[1]; >> $sql="INSERT INTO t1 VALUES('${name}','${ostype}')" >> $sqlcmd.CommandText = $sql >> $ret = $sqlcmd.ExecuteNonQuery() >> } PS C:\> PS C:\> # SELECT実行および表示 PS C:\> $sql = "SELECT * FROM t1" PS C:\> $sqlcmd.CommandText = $sql PS C:\> $rs = $sqlcmd.ExecuteReader() PS C:\> while ($rs.Read()){ >> Write-Host ("|{0,-12}|{1,-12}|" -f $rs[0], $rs[1]) >> } |Windows10 |Windows | |Ubuntu |Linux | |FreeBSD |BSD |
SELECT結果が表示されました。
PS C:\> PS C:\> # SQLiteの切断 PS C:\> $sqlcmd.Dispose() PS C:\> $sqlite.Close() PS C:\>
SQLiteのデータベースファイルが作成されいます。
上記で使ったメソッド以外にもたくさんのメソッドが提供されています。
SQLite System.Data.SQLiteのページにブラウザで接続し、
下の方にスクロールすると「Documentation for System.Data.SQLite」があります。
そこの、downloaded directlyリンクをクリックすると、HTMLヘルプファイル形式のドキュメントがダウロードできます。
ダウンロードしたファイルをダブルクリックすることにより、ドキュメントを見ることができます。
ただし、ダウンロードしたファイルなので、セキュリティのためドキュメント内容が表示されませんでした。
SQLite System.Data.SQLiteファイルと同様に、ブロックを外し許可する必要があります。
ダウンロードしたファイルを右クリックしコンテキストメニューのプロパティをクリックすると以下の画面が表示されますので、
「許可する」にチェックを入れ、OKボタンを押下します。
上記の操作後、ダウンロードしたSQLite.NET.chmをダブルクリックして起動すれば、
以下のキャプチャーのようにドキュメントが表示されます。
以上、.NET Framework用のSQLiteをPowerShellで使用するサンプルでした。