接続型データアクセス
非接続型データアクセスと接続型データアクセス
.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
- 公開