1レコード取得
CommandオブジェクトのExecuteReaderメソッドに、CommandBehavior.SingleRowをパラメータに指定して、テーブルから1レコードを取得するVB.NETのサンプルプログラムです。
Command.ExecuteReader(CommandBehavior.SingleRow)
入力した社員コードのデータを社員テーブルから取得して、その結果を表示するプログラムを作成します。
コントロール | プロパティ | 設定値 |
---|---|---|
TxtSyainCode | - | - |
BtnSelect | Text | 検索 |
Panel1 | BorderStyle | Fixed3D |
LblSyainSimei | - | - |
LblSyainKana | - | - |
取得レコードが1件の時は、ExecuteReaderメソッドの引数にCommandBehavior.SingleRowを指定すると、パフォーマンスの向上が期待できます。
ソースリストの枠内をクリックすると全選択できます。
Imports System.Data.OleDb Public Class FormSelectOne Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " ' 自動生成部分省略 #End Region '------------------------------------------------------------ ' 検索ボタンクリック処理:社員テーブルから1レコード取得 '------------------------------------------------------------ Private Sub BtnSelect_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSelect.Click Dim con As New OleDbConnection() Dim cmd As New OleDbCommand() Dim dr As OleDbDataReader = Nothing ' 社員コード未入力はエラー If Me.TxtSyainCode.Text = "" Then MessageBox.Show("社員コードが未入力です", "エラー") Exit Sub End If Try ' DB接続文字列の設定 ' プロジェクトフォルダ下のbinフォルダにsample.mdbを置く con.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _ Application.StartupPath & "\sample.mdb" ' コネクションの設定 cmd.Connection = con ' SQL文の設定 cmd.CommandText = "SELECT 社員氏名, 社員カナ " cmd.CommandText &= "FROM 社員テーブル " cmd.CommandText &= "WHERE 社員コード = @code" ' DB接続を開く con.Open() ' SQL文パラメータの設定 cmd.Parameters.Add("@code", OleDbType.Char, 5) cmd.Parameters("@code").Value = Me.TxtSyainCode.Text ' 社員テーブルから該当社員IDのレコード読込 ' 取得レコードが1件の時は、 ' 引数にCommandBehavior.SingleRowを指定 dr = cmd.ExecuteReader(CommandBehavior.SingleRow) If dr.Read() Then ' レコードが取得できた時の処理 Me.LblSyainSimei.Text = Cstr(dr("社員氏名")) ' NULL値を許している項目は、NULL値の判定をする If IsDBNull(dr("社員カナ")) Then Me.LblSyainKana.Text = "" Else Me.LblSyainKana.Text = Cstr(dr("社員カナ")) End If Else ' レコードが取得できなかった時の処理 MessageBox.Show _ ("この社員コードは未登録です", "エラー") Exit Sub End If Catch ex As Exception ' 例外が発生した時の処理 MessageBox.Show(ex.ToString, "例外発生") Finally ' データリーダを閉じる If Not dr Is Nothing Then dr.Close() End If ' DB接続を閉じる If Not con Is Nothing Then con.Close() End If End Try End Sub End Class