2010年10月15日金曜日

◆PowershellでDBアクセス2

Accessデータベースの読み込みに今度はDataReaderを使ってみる。

param(
    [string]$dataSource  ,
    [string]$sqlCommand  ,
    [switch]${??}
)
$comment = @'
#####################################################

MRead-AccessDB2.ps1
    Accessデータを読み込む。
param(
    [string]$dataSource  ,
    [string]$sqlCommand  ,
    [switch]${??}
)
例: 
    # Accesデータベースにアクセスする
    MRead-AccessDB2.ps1 "D:\Documents\NWind2007.accdb" -Sql "Select * from 社員"
#####################################################
'@
if(${??}) {$comment;return}
if(!$dataSource) {Write-Warning "Please specify a datasource." ; return}
if(!$sqlCommand) {Write-Warning "Please specify a query." ; return}

#接続文字列を準備する
$connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$dataSource;"

#データソースに接続し開く
$connection = New-Object System.Data.OleDb.OleDbConnection $connectionString
$command = New-Object System.Data.OleDb.OleDbCommand $sqlCommand,$connection
$connection.Open()

#結果をフェッチし、接続を閉じる
$reader = $command.ExecuteReader()
while($reader.Read()){
    0..($reader.FieldCount - 1) | %{$reader.item($_)}
}
$reader.Close()
$connection.Close()


Datasetと違ってリッチなオブジェクトが帰ってこないのでリスト形式で表示している。
データ件数が大きい場合をのぞけばDatasetを使ったほうが便利っぽい。

0 件のコメント:

コメントを投稿