接続型データアクセス

非接続型データアクセスと接続型データアクセス

.NET では、非接続型のデータアクセス (接続を維持せずにデータ処理をおこなう) と、従来通りの接続型データアクセス (処理開始時に接続を行い、処理後に接続を閉じる) が可能です。

接続型データアクセスには、データベース接続、読み書き、データベース切断を明示的に行うので流れが分かりやすく、更新処理において UPDATE 文や DELETE 文を直接記述して実行できるという特徴があります。

ここでは、簡単なサンプルとして、表EMPに対しEMPNoを指定して項目内容を取得してみます。

サンプル概要

非接続型のデータアクセス画面OracleDataReaderを利用してデータを取得します。

DataReaderを使用している間は、データベースとの接続が維持されている必要があります。




サンプルソース

    ''' 
    ''' EMP表のデータを取得する
    ''' 
    ''' 
    ''' 
    Private Sub getData(ByVal EMPNO As Integer)
        Dim ConnectionString As String = "DATA SOURCE=ORCL;User ID=scott;password=tiger;"
        Const cmdSelect As String = _
                    "select " & _
                    "ENAME,JOB " & _
                    "from EMP " & _
                    "where " & _
                    "EMPNO = :EMPNO"

        Dim rd As OracleDataReader = Nothing

        Try
            Using cn As New OracleConnection(ConnectionString)
                'DB接続
                cn.Open()


                Using cmd As New OracleCommand(cmdSelect, cn)
                    'パラメータバインド
                    cmd.BindByName = True
                    cmd.Parameters.Add("EMPNO", OracleDbType.Int32).Value = EMPNO

                    'データを取得する
                    rd = cmd.ExecuteReader
                    If rd.Read Then 'データがあったら..
                        TextBox2.Text = rd.Item("ENAME").ToString.Trim
                        TextBox3.Text = rd.Item("JOB").ToString.Trim
                    Else
                        MessageBox.Show("データが見つかりません", "EMP No.を確認してださい", _
                                    MessageBoxButtons.OK, MessageBoxIcon.Error)
                        TextBox1.Focus()
                    End If

                    'DataReader Close
                    rd.Close()

                End Using

                'DB切断
                cn.Close()

            End Using

        Catch ex As OracleException
            MessageBox.Show(ex.Message, "例外エラー(Oracle)", MessageBoxButtons.OK, MessageBoxIcon.Error)

        Catch ex As Exception
            MessageBox.Show(ex.Message, "例外エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)

        Finally
            If Not IsNothing(rd) Then
                If Not rd.IsClosed Then
                    rd.Close()
                End If
                rd.Dispose()
            End If

        End Try
    End Sub

Line 20 : データベースに接続します。
ConnectionStringプロパティに接続文字列をセットします。Openメソッドを実行します。

Line 23 : データを取得
OracleCommandオブジェクトに選択条件(SQL)を設定して、ExecuteReaderメソッドを実行します。
ExecuteReaderメソッドの実行により、Oracle上に選択条件を満たすレコードが確保され、レコードを読み出す為のカーソル情報をメソッドの戻り値として返します。この返された値を受け取るのがOracleDataReaderです。
・SELECT文とOracleConnectionオブジェクトを設定して、OracleCommandオブジェクトを生成。
・OracleDataReaderのReadメソッドで、Oracleカーソル位置にある1レコードをOracleDataReaderのItemコレクションに転記。1回のReadメソッドで読むレコード数は、OracleDataReaderのFetchSizeとレコード長で決まります)
・OracleDataReaderのitemに入った値をTextBoxのTextプロパティにセット。
・OracleDataReaderは使い終わったら必ずCloseする。(Line40)

Line 45 : データベースの接続を切断

履歴

2011/07/14
公開
Loading