C# 使用SqlReader从存储过程中获取多个表
我有一个用户定义的类型,它是SqlServer数据库中的数据表。我一直在使用数据库、DbCommand等调用存储过程并获取数据集。数据集很方便,因为它们可以包含多个表 现在我想传入一个Datatable,所以我尝试:C# 使用SqlReader从存储过程中获取多个表,c#,sql,database,C#,Sql,Database,我有一个用户定义的类型,它是SqlServer数据库中的数据表。我一直在使用数据库、DbCommand等调用存储过程并获取数据集。数据集很方便,因为它们可以包含多个表 现在我想传入一个Datatable,所以我尝试: string _strComText = "stored_procedure_name_changed_to_protect_the_innocent"; _objCom = _objDB.GetSqlStringCommand(_strComText); _objDB.AddIn
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\u ITEMIDS\”):数据类型0x62(sql\u变量)对于特定于类型的元数据具有无效类型。”
我见过SqlReader可以实现这一点,但是SqlReader可以用来获取多个表吗?如果我的第一个表是空的,我在SqlReader中看不到任何行
sqlReader可以用于获取多个表吗
对。您必须按顺序读取每个表,并在表之间调用.NextResult()
方法
using (var rdr = MySqlCommand.ExecuteReader())
{
do
{
while (rdr.Read())
{
//do something with each record
}
} while(rdr.NextResult());
}
呃,_obj前缀不再被认为是好的样式。