2009-07-13 13 views
0

.NET 3/3.5(C#)プログラミングの新機能です。それはあなたのために簡単かもしれませんが、私のためではありません。 私はC#アプリケーションからコマンドを使用してストアドプロシージャを実行するタスクを持っており、3つの異なるデータテーブルを返します。procは既にSQL 2005で実行されていますが、C#でデータを取得する方法を知りたい。結果セットが複数のデータテーブルを返す場合、結果セットからデータテーブルを処理する方法をC#コードで正確に必要とします。 ありがとうC#オブジェクトとコード例

+0

これまでにあなたの試行を投稿することをお勧めします... –

答えて

4

SqlDataAdapter.Fill()メソッドを使用してDataSetを入力できます。

ds.Tables[0].Rows[0]["Column X"]; 
ds.Tables[1].Rows[0]["Column Y"]; 
ds.Tables[2].Rows[0]["Column Z"]; 
... 

それとも、あなたは(あなたは、前方のみの形式でデータを処理したい場合は高速です)SqlDataReaderを使用することができます - この方法は、あなたがこれを使用して複数の結果テーブルにアクセスすることができます。最初の結果セットのレコードを読み込むには、whileループを反復してSqlDataReader.Read()メソッドを呼び出すことができます。

while(reader.Read()) 
{ 
    //Process the first result set here. 
} 

次の結果セットをフェッチするには、SqlDataReader.NextResult()メソッドを呼び出します。

reader.NextResult(); 
while(reader.Read()) 
{ 
    //Process the next result set here. 
} 
2

あなたはすでにデータセットを持っていますか?もしそうなら、それは簡単です。 Tablesプロパティを使用して特定のテーブルにアクセスします。

DataTable users = dataSet.Tables["users"]; 

これが意味することではない場合は、質問を明確にしてください。

+0

私は、ADO.NETを使用してSQLクエリから返された複数の結果セットを処理する方法を尋ねることを意味します。 – Kirtan

+0

しかし、私たちがさらに手伝ってくれるかどうかを知る必要があります。既にDataSetを持っていれば、DataReaderをどうすればいいのかを説明することができます。 –

+1

Hmmm。あなたが正しいです。しかし、私はその質問から推論したことに基づいて答えました。私は彼が彼のアプリで複数の結果セットを取得し、それらを使用する方法に固執していたと思った。私は彼にこれを行うことができる2つの方法を示しました。そしてbtw、彼はdatatable /結果セットの間で混乱している、彼は実際に結果セットにそれを参照する必要があります。 – Kirtan

3

使用のNextResultはExecuteReaderの

SqlDataReader reader = command.ExecuteReader(); 
    while (reader.HasRows) 
    { 
     Console.WriteLine("\t{0}\t{1}", reader.GetName(0),reader.GetName(1)); 

     while (reader.Read()) 
     { 
      Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0), 
         reader.GetString(1)); 
     } 
     reader.NextResult(); 
    } 
0
Dim db As Database = DatabaseFactory.CreateDatabase(ApplicationStringResource.DbConn) 
    Dim cmd As DbCommand = db.GetStoredProcCommand(DbStoreProc.GetFeeCodeStoreProc) 
    Dim sReader As SqlDataReader = db.ExecuteReader(cmd) 
    Try 
     While sReader.Read() 
      Dim feeCode As New FeeCode() 
      With feeCode 
       .FeeCode = sReader("FeeCode") 
       .Description = sReader("Description") 
      End With 
      feeCodeList.Add(feeCode) 
     End While 
    Catch ex As Exception 
     Throw New Exception(ex.Message) 
    Finally 
     sReader.Close() 
    End Try 
    Return feeCodeList 

の場合には、私はMSエンタープライズライブラリを使用して、上記の私は、SqlDataReaderのを介してデータを取得するために使用したコードブロックです。

+0

それはC#ではないです。質問者はVB.NetではなくC#でそれを望んでいます。 –

関連する問題