- 概要
- データベースへアクセスするためのクラス。Oracle データベース用。
- 使い方
- DB-Export-CSV または DB-Import-CSV を参照。
- PowerShell ソース
- #
# この .PS1 を使用する場合、以下のようにアセンブリをロードする必要があります。
#
# [void][reflection.assembly]::LoadWithPartialName("System.Data.OracleClient")
#
[void] [reflection.assembly]::LoadWithPartialName('System.Data.OracleClient')
Class DbCtl : System.IDisposable
{
[System.Data.OracleClient.OracleConnection] $cnn
[System.Data.OracleClient.OracleCommand] $cmd
DbCtl( [String] $DataSource, [String] $UserId, [String] $UserPw )
{
$sign = 'Data Source={0};User ID={1};Password={2};Integrated Security={3};' -f $DataSource, $UserId, $UserPw, 'false'
$this.cnn = [System.Data.OracleClient.OracleConnection]::new( $sign )
$this.cnn.Open()
$this.cmd = $this.cnn.CreateCommand()
}
Dispose()
{
$this.DetachCommand()
if( $this.cnn -ne $Null )
{
$this.cnn.Dispose()
$this.cnn = $Null
}
}
[void] AttachCommand( [String] $strSql )
{
# if( $this.cmd -ne $Null )
# {
# $this.cmd.Prepare()
# }
# else
# {
# $this.cmd = $this.cnn.CreateCommand()
# }
$this.cmd.CommandText = $strSql
}
[void] DetachCommand()
{
if( $this.cmd -ne $Null )
{
$this.cmd.Dispose()
$this.cmd = $Null
}
}
[void] SetParam( $key, $value )
{
$this.cmd.Parameters.Add( [System.Data.OracleClient.OracleParameter]::new($key, $value) )
}
[Int32] ExeSelect( [System.Data.DataSet] $dset )
{
$adapter = [System.Data.OracleClient.OracleDataAdapter]::new( $this.cmd )
$r = $adapter.Fill( $dset )
$adapter.Dispose()
$adapter = $Null
return $r
}
[void] BeginTransaction()
{
if( $this.cmd -ne $Null )
{
# トランザクション分離レベルはなんなんだろう?
# $this.cmd.transaction = $this.cnn.BeginTransaction( [System.Data.IsolationLevel]::RepeatableRead )
$this.cmd.transaction = $this.cnn.BeginTransaction()
}
}
[void] Commit()
{
if( ($this.cmd -ne $Null) -band ($this.cmd.transaction -ne $Null) )
{
$this.cmd.transaction.Commit()
}
}
[void] Rollback()
{
if( ($this.cmd -ne $Null) -band ($this.cmd.transaction -ne $Null) )
{
$this.cmd.transaction.Rollback()
}
}
}