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メソッドは何かと便利なメソッドです。