2016-04-01 36 views
0

からデータを取得します返された実際の数値を取得しますか?私の現在のメソッドは、DataTableの行の数を返します。デフォルトでは常に1になります。Count()を返す必要があります。ここでは、私は、クエリは、私はどのように行う、私はSQL Serverに接続して、このクエリを実行するために<code>C#</code>を使用していますが、私の問題がある</p> <pre><code>Select Count(numstudents) from classA </code></pre> <p>でカウントを返しますSQLクエリを実行していたDataTable

がいっぱいですC#構文:

private void GetData() 
{ 
    DataSet ds = new DataSet() 
    using (var con = new SqlConnection(connectionString)) 
    { 
    using (var cmd = new SqlCommand("RunAStoredProc", con)) 
    { 
     using (var da = new SqlDataAdapter(cmd)) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 
      da.Fill(ds); 
     } 
    } 
    } 
    DataTable table1 = new DataTable(); 
    table1 = ds.Tables[0]; 
    DataTable table2 = new DataTable(); 
    table2 = ds.Tables[1]; 

    string numberreturned = table1.Rows.Count.ToString(); 
    Console.WriteLine(numberreturned); 
    Console.ReadKey(); 
} 

ストアード・プロシージャーなどのように読み取ります

Alter Procedure [dbo].[GetData] 
As 

Select Count(*) FROM classA 

Select studentfirstname, studentlastname FROM classA 
Where enrolled = 'Yes' 

答えて

1

あなただけ持っている場合は、SqlDataAdapterオブジェクトとで動作するために必要なすべてのインフラストラクチャを必要としませんストアドプロシージャによって返される単一の値。あなたが本当にあなたが返されるテーブルから1行1列目から値を読み取るクエリの結果を見つけることができるアダプタとデータセットを使用する場合だけでは、ExecuteScalar

しかし
int count = 0; 
using (var con = new SqlConnection(connectionString)) 
using (var cmd = new SqlCommand("RunAStoredProc", con)) 
{ 
    cmd.CommandType = CommandType.StoredProcedure; 
    count = (int)cmd.ExecuteScalar(); 
} 
Console.WriteLine(count); 
Console.ReadKey(); 

を使用

int count = Convert.ToInt32(table1.Rows[0][0]); 
(TABLE1の変数を宣言せずに)

あるいは

int count = Convert.ToInt32(ds.Tables[0].Rows[0][0]); 

最初のSELECT文の結果と行数の違いを検出するにはreturne D二select文にあなたが

int allStudents = Convert.ToInt32(ds.Tables[0].Rows[0][0]); 
int enrolledStudents = ds.Tables[1].Rows.Count; 

int notEnrolledStudents = allStudents - enrolledStudents; 
+0

を書くことができ、私は実際には2つの選択ステートメント(なぜ私はSqlDataAdapterオブジェクトを使用しています)を返すのです - 私は(構文が正しく取得することはできません)最初の選択からのカウントを必要と私は繰り返しますds.Tables [1]のデータ。 –

+0

ストアドプロシージャのコードを追加できますか?これがカウントクエリの場合は、データセットの1番目または2番目のテーブルに1つの行だけが存在します。その場合、2番目の例では、classAの生徒数を取得するには十分でなければなりません(最初の表に格納されている場合) – Steve

+0

SQL構文を表示するように更新されたオリジナル投稿。 –

関連する問題

 関連する問題