2010-06-04 60 views
4

我有一個用戶定義的類型,它是SqlServer數據庫中的一個數據表。我一直在使用數據庫,DbCommand等調用存儲過程並獲取數據集。數據集很方便,它們可以包含多個表。使用SqlReader獲取存儲過程中的多個表

現在我想通過在一個DataTable,所以我嘗試:

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前綴不再被認爲是很好的風格。 – 2010-06-04 04:14:11

+0

我繼承了這個。 – BrianK 2010-06-04 05:26:35

回答

8

sqlReader可以用來取回多個表嗎?

是的。您必須依次讀取每個表格,並在表格之間調用.NextResult()方法。

using (var rdr = MySqlCommand.ExecuteReader()) 
{ 
    do 
    { 
     while (rdr.Read()) 
     { 
      //do something with each record 
     } 
    } while(rdr.NextResult()); 
} 
相關問題