ねこ元帥の中の人@リウマチ

日々の覚書など。ブログ名はオンラインゲームのアカウント名をいつも「ねこ元帥」にしているから。そして、2013年11月リウマチと診断されたとです。(2012年11月から時々手足に原因不明の痛みが発生、2013年9月以降は足の痛みが常態化、2013年12月30日からMTX服用開始、4月過ぎるころにはわずかの痛みが残る程度まで回復して現在に至る。)

PowerShellからsqliteを使用する

sqliteの.NET用ライブラリをダウンロードしてくる。

http://www.sqlite.org/download.html

  • Precompiled Binaries for 32-bit Windows (.NET Framework 4.0)
    • sqlite-netFx40-binary-Win32-2010-1.0.74.0.zip

PowerShellが使用する.NET Frameworkのバージョンを4に変更する。PowerShellを管理者モードで起動して、以下のコマンドを実行する。

@'
<?xml version ="1.0"?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true" >
    <supportedRuntime version="v4.0.30319" /> 
  </startup>
  <runtime>
    <loadFromRemoteSources enabled="true"/>
  </runtime>
</configuration>

'@ | Out-File "${PSHOME}\powershell.exe.config" -Encoding ASCII

バージョン確認

$assemblies = [AppDomain]::CurrentDomain.GetAssemblies()
$assemblies | ?{$_.GetName().Name -like "System"}
GAC    Version        Location
---    -------        --------
True   v4.0.30319     C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll

sqliteライブラリの動作確認

[void][System.Reflection.Assembly]::LoadFile("C:\Tools\sqlite\System.Data.SQLite.dll")
$sqlite = New-Object System.Data.SQLite.SQLiteConnection
$sqlite.ConnectionString = "Data Source = C:\Tools\sqlite\data.db"
$sqlite.Open()

$cmd = @"
    CREATE TABLE hoge
    (
        id   INTEGER,
        name VARCHAR(20)
    )
"@

$sqlcmd = New-Object System.Data.SQLite.SQLiteCommand
$sqlcmd.Connection = $sqlite
$sqlcmd.CommandText = $cmd
$sqlcmd.ExecuteNonQuery()
$sqlite.Close()