指定行指定列の値取得 [VB.NET]

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

Command.ExecuteScalar

CommandオブジェクトのExecuteScalarメソッドを使えば、任意のレコードの任意の列(セル)の値を取得することができます。

VB.NET(OleDb)版

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

フォーム
コントロール プロパティ 設定値
TxtSyainCode - -
BtnSelect Text SELECT文の先頭行の最初の列を表示
LblSyainSimei BorderStyle Fixed3D

サンプルプログラム

レコードと列の絞込みは、SQL文で制御します。

"SELECT 社員氏名 FROM 社員テーブル WHERE 社員コード = @code"

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

Imports System.Data.OleDb

Public Class FormScalar
    Inherits System.Windows.Forms.Form

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

    '------------------------------------------------------------
    ' 検索ボタンクリック処理:社員テーブルの指定行指定列を取得
    '------------------------------------------------------------
    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()

        Try
            ' DB接続文字列の設定
            con.ConnectionString = _
            "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
            Application.StartupPath & "\sample.mdb"

            ' コネクションの設定
            cmd.Connection = con

            ' DB接続
            con.Open()

            ' SQL文の設定
            cmd.CommandText = "SELECT 社員氏名 FROM 社員テーブル "
            cmd.CommandText &= "WHERE 社員コード = @code"

            ' SQL文パラメータの設定
            cmd.Parameters.Add("@code", OleDbType.Char, 5)
            cmd.Parameters("@code").Value = Me.TxtSyainCode.Text

            ' 指定行の指定列の値を取得し画面に表示
            Me.LblSyainSimei.Text = CStr(cmd.ExecuteScalar())

        Catch ex As Exception
            ' 例外が発生した時の処理
            MessageBox.Show(ex.ToString, "例外発生")

        Finally
            ' DBクローズ
            If Not con Is Nothing Then
                con.Close()
            End If
      End Try

    End Sub

End Class

ExecuteScalarメソッドは何かと便利なメソッドです。