Web版テーブルからレコード取得 [VB.NET]

Visual Basic.NET ADO.NETデータベースプログラミング

テーブルから1レコード取得

CommandオブジェクトのExecuteReaderメソッドで、テーブルから1レコードを取得するVB.NETのWeb版。

Command.ExecuteReader(CommandBehavior.SingleRow)

VB.NET(OleDb)Web版

入力した社員コードのデータを社員テーブルから取得して、その結果を表示するプログラムを作成します。

実行例
コントロール プロパティ 設定値
TxtSyainCode - -
BtnSelect Text 検索
LblSyainSimei - -
LblSyainKana - -
LblMessage BorderStyle Ridge

CommandオブジェクトのExecuteReaderメソッドを使ったWeb版。ExecuteReaderの引数には、CommandBehavior.SingleRowを指定します。

ソースリストの枠内をクリックすると全選択できます。

Imports System.Data.OleDb

Public Class WebFormSelectOne
  Inherits System.Web.UI.Page
  Protected WithEvents Label1 As System.Web.UI.WebControls.Label
  Protected WithEvents TxtSyainCode As System.Web.UI.WebControls.TextBox
  Protected WithEvents BtnSelect As System.Web.UI.WebControls.Button
  Protected WithEvents Label2 As System.Web.UI.WebControls.Label
  Protected WithEvents Label3 As System.Web.UI.WebControls.Label
  Protected WithEvents LblSyainSimei As System.Web.UI.WebControls.Label
  Protected WithEvents LblSyainKana As System.Web.UI.WebControls.Label
  Protected WithEvents LblMessage As System.Web.UI.WebControls.Label

#Region " Web フォーム デザイナで生成されたコード "
    ' 自動生成部分省略
#End Region

  '----------------------------------------------------------
  ' ページロード処理
  '----------------------------------------------------------
  Private Sub Page_Load(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MyBase.Load

      LblMessage.Text = ""

  End Sub

  '------------------------------------------------------------
  ' 検索ボタンクリック処理:社員テーブルからレコード取得
  '------------------------------------------------------------
  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

      Me.LblSyainSimei.Text = ""
      Me.LblSyainKana.Text = ""

      ' 社員コード未入力はエラー
      If Me.TxtSyainCode.Text = "" Then
          Me.LblMessage.Text = "社員コードが未入力です"
          Exit Sub
      End If

      Try
          ' 仮想アプリケーションルートパスを取得
          Dim vPath As String = Request.ApplicationPath
          ' 仮想アプリケーションルートパスの物理パスを取得
          Dim path As String = Server.MapPath(vPath)

          ' DB接続文字列の設定
          con.ConnectionString = _
          "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
          path & "\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
              ' レコードが取得できなかった時の処理
              LblMessage.Text = "この社員コードは未登録です"
              Exit Sub
          End If

      Catch ex As Exception
          ' 例外が発生した時の処理
          lblMessage.Text = 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