2010-06-04 3 views
4

SqlServer 데이터베이스의 데이터 테이블 인 사용자 정의 형식이 있습니다. 데이터베이스, DbCommand 등을 사용하여 저장 프로 시저를 호출하고 데이터 집합을 다시 가져 왔습니다. 데이터 세트는 여러 테이블을 포함 할 수 있다는 점에서 편리합니다.SqlReader를 사용하여 저장 프로 시저에서 여러 테이블 가져 오기

지금 내가있는 데이터 테이블을 전달하려는, 그래서 시도 :

string _strComText = "stored_procedure_name_changed_to_protect_the_innocent"; 
_objCom = _objDB.GetSqlStringCommand(_strComText); 
_objDB.AddInParameter(_objCom, "@BASE_ITEMIDS", DbType.Object, dtItemIds); 
_objCom.CommandType = CommandType.StoredProcedure; 
dataset = _objDB.ExecuteDataSet(_objCom); 

하지만 "@BASE_ITEMIDS는"올바른 유형 아니라고 예외가 : "들어오는 테이블 형식 데이터 스트림 (TDS) 원격 프로 시저 호출 (RPC) 프로토콜 스트림이 올바르지 않습니다 매개 변수 1 (\ "@ BASE_ITEMIDS \") : 데이터 형식 0x62 (sql_variant)에 형식 별 메타 데이터 형식이 잘못되었습니다. "

SqlReader를 사용하여이 작업을 수행 한 적이 있지만 여러 테이블을 가져 오는 데 sqlReader를 사용할 수 있습니까? 첫 번째 테이블이 비어 있으면 SqlReader에 행이 표시되지 않습니다.

+3

어구 _obj 접두사는 더 이상 좋은 스타일로 간주되지 않습니다. –

+0

나는 이것을 상속했다. – BrianK

답변

8

여러 테이블을 가져 오기 위해 sqlReader를 사용할 수 있습니까?

예. 순서대로 각 테이블을 읽고 테이블간에 .NextResult() 메서드를 호출해야합니다.

using (var rdr = MySqlCommand.ExecuteReader()) 
{ 
    do 
    { 
     while (rdr.Read()) 
     { 
      //do something with each record 
     } 
    } while(rdr.NextResult()); 
} 
관련 문제