執筆者: インフォシェア株式会社 小高 太郎

動作確認環境: .NET Framework 2.0 以上、Visual Studio 2005 以上


データベースの集合関数を用いて結果セットのレコード数を取得する場合、ExecuteReader メソッドから DataReader を使用するよりも、ExecuteScalar メソッドから直接値を取得すれば、よりプログラムを簡素に記述することが可能です。

C#
using System.Data.SqlClient; 
 
static void Main(string[] args) 
{ 
    using (SqlConnection cn = new SqlConnection()) 
    { 
        cn.ConnectionString = "Data Source=.;Initial Catalog=Northwind;Integrated Security=True"; 
        cn.Open(); 
 
        SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Products", cn); 
 
        int Count = (int)cmd.ExecuteScalar(); 
        Console.WriteLine("商品数は{0}件です",Count); 
    } 
} 
 

ExecuteScalar メソッドは、結果セットの 1 行目の 1 列目の値をスカラー値として返すため、他の集合関数 (AVG、SUM)、SQL Server のグローバル変数 (@@SPID,@@ERROR) などの値を取得するとき等にも使用すると便利です。ただし、値の NULL チェックの実行をおすすめいたします。(今回の例はカウントの取得ですので省略してあります。)

参考リンク


Code Recipe

ページのトップへ