PowerShell から Oracle DB に接続してみる

前回は PowerShell から ODBC データソースを利用して DB 接続してみたが、今度は Oracle DB の接続文字列を用意して直接 Oracle DB にアクセスしてみる。

# SQL 文作成 Function
function createSelectSQL() {
  $SQL = New-Object System.Text.StringBuilder
  # [void] を書く必要がある
  [void]$SQL.append(" SELECT ")
  [void]$SQL.append("     * ")
  [void]$SQL.append(" FROM ")
  [void]$SQL.append("     my_table ")
  [void]$SQL.append(" WHERE ")
  [void]$SQL.append("     id LIKE '11%' ")
  $SQL  # ToString しなくて OK
}

# アセンブリをロードする
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Data.OracleClient")

# コネクションを作成する
# - Data Source : 接続文字列。各自の Oracle DB の情報に書き換える
# - Integrated Security : Windows のログイン情報を使用して Oracle DB に接続するかどうか
$oracleConnectionString = "Data Source=MY_DATA_SOURCE;User ID=MY_USER_ID;Password=MY_PASSWORD;Integrated Security=false;"
$oracleConnection = New-Object System.Data.OracleClient.OracleConnection($oracleConnectionString)

# インスタンスを初期化する
$oracleCommand = New-Object System.Data.OracleClient.OracleCommand
$oracleCommand.Connection = $oracleConnection

# DB 接続
$oracleConnection.open()

# SQL : SELECT
$oracleCommand.CommandText = createSelectSQL
$oracleReader = $oracleCommand.ExecuteReader()
while($oracleReader.Read()) {
  $oracleReader["id"].ToString() + " … " + $oracleReader["user_name"].ToString()
}
$oracleReader.Dispose()

# DB 接続 : トランザクション実行中に Close() を呼ぶとロールバックされる
$oracleCommand.Dispose()
$oracleConnection.Close()
$oracleConnection.Dispose()

昔作ったスクリプトが出てきたのでポイ捨て。