2017-01-25 2 views
0

두 테이블을 반환하는 저장 프로 시저가 있습니다. 표 1에는 예를 들어 {1,2,3,4,5}가 있고 표 2에는 {a, b, c, d, e}가 있습니다. 예를 들어 {1, a}, {2, b}도 모두 유사합니다.Visual C#에서 DataReader를 사용하여 여러 결과를 처리하는 방법?

제 독자는 이러한 모든 데이터를 목록으로 읽어야합니다. 개체에는 {1, a}이 (가)있는 두 개의 속성이 있습니다. 이것은 여기에서 일어나고있는 것은 내가 10 개 거래 ID와 10 개 금액을 반환하는 경우, 내 최종 결과는 1 트랜잭션과 매핑 (10 개) 양이있다 내가 지금 가지고있는 코드,

while(reader.Read()) 
     { 
      Transaction transaction = null; 
      transactions.Add(transaction = new Transaction() 
      { 
       TranID = reader.GetInt64(reader.GetOrdinal("TranID")) 
      }); 

      if (reader.NextResult()) 
      { 
       while (reader.Read()) 
       { 
        transaction.Amounts.Add(new Fund 
        { 
         Amount = reader.GetDecimal(reader.GetOrdinal("Amount")), 
        }); 
       } 
      } 
     } 

입니다. 동일한 액수의 거래를 어떻게 처리합니까?

+2

나는 두 개가 아닌 하나의 결과 집합을 반환하도록 저장 프로 시저를 변경하는 것이 더 좋을 것이라고 생각합니다. –

+0

다른 방법이 있나요? – user1890098

+0

아마도 다른 방법이있을 수 있습니다.하지만 돌아온 테이블을 설명하는 방법에서 어떻게 {1, a}, {2, b}가 아닌 {1, a, b}인지, {2, c}? –

답변

1

이렇게하면 SqlDataReader에서 여러 결과 집합에 액세스 할 수 없습니다. 한 번에 하나의 결과 집합에서 모든 행에 액세스 할 수 있습니다. nextresult 집합으로 이동하면 이전 결과 집합으로 돌아갈 수 없습니다.

다음은 SqlDataReader의 여러 결과 집합에서 데이터를 검색하는 방법에 대한 샘플 코드입니다.

while (reader.Read()) 
{ 
    Console.WriteLine(reader.GetString(0)); 
} 

if (reader.NextResult()) 
{ 
    while (reader.Read()) 
    { 
     Console.WriteLine(reader.GetString(0)); 
    } 
}