SqlCommand.ExecuteScalarメソッド
SqlCommandオブジェクトのExecuteScalarメソッドを使って、テーブル(表)のレコード数を取得するプログラムを作成します。
VB Express [SQL Server 2008版] サンプルプログラム
- フォームにボタンとラベル2つを貼り付け、ラベル2に、商品マスター表の全レコード数を表示する
- 検索ボタンを押下すると、SqlCommandオブジェクトのExecuteScalarで商品マスター表の全レコード数を取得する
- 【注意】接続文字列は、アプリケーション構成ファイルapp.configから取得するようにしてください。
Key | 列名 | データ型 | NULLを許容 |
---|---|---|---|
● | 商品コード | nchar(5) | しない |
商品名称 | nvarchar(30) | しない | |
販売単価 | int | しない |
OleCommand.ExecuteScalarでテーブルの全レコード数を取得するサンプルはこちら
OleCommand.ExecuteScalarのサンプルはこちら
ソースリストの枠内をクリックすると全選択できます。
Option Strict On Imports System.Data.SqlClient Public Class Form1 '********************************************************************* ' 検索ボタン押下処理 '********************************************************************* Private Sub Button1_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Using con As New SqlConnection Using cmd As New SqlCommand ' 接続文字列の設定(SQL Server 2008 Express Edition) con.ConnectionString = _ "Data Source=.\SQLEXPRESS;" & _ "AttachDbFilename=" & _ "'C:\Program Files\Microsoft SQL Server" & _ "\MSSQL10.SQLEXPRESS2008\MSSQL\DATA" & _ "\販売管理データベース.mdf';" & _ "Integrated Security=True;" & _ "Connect Timeout=30;" & _ "User Instance=True" ' SqlCommand.Connectionプロパティの設定 cmd.Connection = con ' DB接続 con.Open() ' SQL文の設定 cmd.CommandText = _ "SELECT COUNT(*) FROM 商品マスター表" ' 全レコード数を取得しラベルに表示 Me.Label2.Text = CStr(cmd.ExecuteScalar()) End Using End Using Catch ex As Exception ' 例外が発生した時の処理 MessageBox.Show(ex.ToString) End Try End Sub End Class
ExecuteScalarは、最初の行の最初の列を返すので、単一の値を取得するSQL文を書けば、様々な値を求めることができます。
たとえば、最大値を求める時は、SQL文を"SELECT MAX(列名) FROM 表名" と記述します。
' 一番高い販売単価を求めるSQL文の設定 cmd.CommandText = "SELECT MAX(販売単価) FROM 商品マスター表" ' 一番高い販売単価 Dim max As Integer = cmd.ExecuteScalar()