PowerShellで.NET Framework版のSQLiteを操作する方法 †SQLiteには、.NET Framework 版があります。 参考資料 †.NET Framework 版 SQLiteの入手 †.NET Framework版のSQLiteは以下のURLからダウンロードすることができます。
本資料では、Windows 10 64bit を使用し、.NET Framework版のSQLiteを操作します。 ダウンロードしたzipファイルから必要なファイルを取り出す †今回は、テスト的に動作させるため、すべてデスクトップで作業を行います。
.NET Framework版のSQLiteを操作するサンプルスクリプト †以下のスクリプトを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.NET.chmをダブルクリックして起動すれば、 以上、.NET Framework用のSQLiteをPowerShellで使用するサンプルでした。 |