このエントリーをはてなブックマークに追加


PowerShellで.NET Framework版のSQLiteを操作する方法

SQLiteには、.NET Framework 版があります。
これを、PowerShellから操作する方法を以下に記します。

参考資料

.NET Framework 版 SQLiteの入手

.NET Framework版のSQLiteは以下のURLからダウンロードすることができます。

本資料では、Windows 10 64bit を使用し、.NET Framework版のSQLiteを操作します。
Windows10に標準搭載されている、.NET Framework 4.6対応版をダウンロードして使用することにします。
本資料では、以下の画像内でで囲んだファイルをダウンロードして使用しました。
sqlite-netFx46-static-binary-x64-2015-1.0.108.0.zip

01.png

ダウンロードしたzipファイルから必要なファイルを取り出す

今回は、テスト的に動作させるため、すべてデスクトップで作業を行います。

  1. デスクトップに SQLite フォルダを作成してください。
  2. ダウンロードしたZIPファイルを展開します。
  3. ダウンロードしたZIPファイルから、以下に記す3つのファイルをデスクトップに作成したSQLiteフォルダにコピーしてください。
    • SQLite.Interop.dll
    • System.Data.SQLite.dll
    • System.Data.SQLite.xml
    • コピー(取り出す)ファイルのスクリーンショット(選択されている3つのファイルです)
      02.png
       
    • コピー後のスクリーンショットです。
      デスクトップ上にSQLiteフォルダがあり、フォルダ内には上記で記した3つのファイルがコピーされている状態です。
      03.png
       
  4. ダウンロードしたファイルなので、ブロックの解除操作が必要となります。
    以下の手順で3つのファイルをブロック解除します。
    1. 3つのファイルを1つずつ選択し、右クリックでコンテキストメニューを表示し「プロパティ」をクリックします。
      この操作を3ファイルに対して行います。(3回行うことになります。)
      下図は、SQLite.Interop.dllの設定を変更した例です。(他の2つのファイルも同様に操作してください。)
      04.png
       
    2. セキュリティ:このファイルは他のコンピュータから取得したものです。…の
      「許可する」チェックボックスにチェック入れ、OKボタンを押します。
      05.png
       

.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のデータベースファイルが作成されいます。

06.png

ドキュメント

上記で使ったメソッド以外にもたくさんのメソッドが提供されています。
SQLite System.Data.SQLiteのページにブラウザで接続し、
下の方にスクロールすると「Documentation for System.Data.SQLite」があります。
そこの、downloaded directlyリンクをクリックすると、HTMLヘルプファイル形式のドキュメントがダウロードできます。

07.png
 

ダウンロードしたファイルをダブルクリックすることにより、ドキュメントを見ることができます。
ただし、ダウンロードしたファイルなので、セキュリティのためドキュメント内容が表示されませんでした。
SQLite System.Data.SQLiteファイルと同様に、ブロックを外し許可する必要があります。
ダウンロードしたファイルを右クリックしコンテキストメニューのプロパティをクリックすると以下の画面が表示されますので、
「許可する」にチェックを入れ、OKボタンを押下します。

08.png
 

上記の操作後、ダウンロードしたSQLite.NET.chmをダブルクリックして起動すれば、
以下のキャプチャーのようにドキュメントが表示されます。

09.png

以上、.NET Framework用のSQLiteをPowerShellで使用するサンプルでした。


添付ファイル: file09.png 730件 [詳細] file08.png 698件 [詳細] file07.png 777件 [詳細] file06.png 725件 [詳細] file05.png 723件 [詳細] file04.png 709件 [詳細] file03.png 754件 [詳細] file02.png 777件 [詳細] file01.png 837件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-08-15 (水) 21:35:56