2012年9月27日木曜日

◆データベースへアクセスする関数

データベースアクセスはこれまで何度もやっているが、以下で関数が提供されていたので転載しておく。
Windows PowerShell: Windows PowerShell からデータベースにアクセスする

Powershellの第1人者が提供する関数なので使って損はないだろうと思い、プロファイルに入れておくことにした。

抽出用と更新用の関数2つ。

接続文字列のサンプルだけをちょっと追加している。
Get-DatabaseDataU –? で簡易的に接続文字列サンプルを表示させている。

また、この記事で紹介されている接続文字列のサンプルサイトはリンクしておくと役に立ちそうだ。

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063

$comment=@'
  接続文字列サンプル
  (1) "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
  (2) "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;"
'@


function Get-DatabaseDataU
 {
   
param
 (
       
[string]$connectionString,
        [string]$query,
        [switch]$isSQLServer,
        [switch]${??}
    )
 
if(${??}) {$comment;return
}

   
if ($isSQLServer
) {
       
Write-Verbose 'in SQL Server mode'
        $connection = New-Object -TypeName System.Data.SqlClient.SqlConnection
    } else
 {
       
Write-Verbose 'in OleDB mode'
        $connection = New-Object -TypeName System.Data.OleDb.OleDbConnection
    }
   
$connection.ConnectionString = $connectionString
    $command = $connection.
CreateCommand()
   
$command.CommandText = $query
    if ($isSQLServer
) {
       
$adapter = New-Object -TypeName System.Data.SqlClient.SqlDataAdapter $command
    } else
 {
       
$adapter = New-Object -TypeName System.Data.OleDb.OleDbDataAdapter $command
    }
   
$dataset = New-Object -TypeName System.Data.DataSet
    $adapter.Fill($dataset
)
   
$dataset.Tables[0]
}

function Invoke-DatabaseQueryU
 {
   
param
 (
       
[string]$connectionString,
        [string]$query,
        [switch]$isSQLServer,
        [switch]${??}

    )
 
if(${??}) {$comment;return
}

   
if ($isSQLServer
) {
       
Write-Verbose 'in SQL Server mode'
        $connection = New-Object -TypeName System.Data.SqlClient.SqlConnection
    } else
 {
       
Write-Verbose 'in OleDB mode'
        $connection = New-Object -TypeName System.Data.OleDb.OleDbConnection
    }
   
$connection.ConnectionString = $connectionString
    $command = $connection.
CreateCommand()
   
$command.CommandText = $query
    $connection.
Open()
   
$command.
ExecuteNonQuery()
   
$connection.close()
}

0 件のコメント:

コメントを投稿