A THINKING FRUIT
概要
 データベースへアクセスするためのクラス。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() } } }