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 件のコメント:
コメントを投稿