我有一个用户定义的类型,它是SqlServer数据库中的数据表.我一直在使用Database,DbCommand等来调用存储过程并获取数据集.数据集很方便,因为它们可以包含多个表.
现在我想传入一个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);
Run Code Online (Sandbox Code Playgroud)
但我得到一个例外,"@ BASE_ITEMIDS"不是正确的类型:"传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确.参数1(\"@ BASE_ITEMIDS \"):数据类型0x62 (sql_variant)类型特定的元数据的类型无效."
我已经看到用SqlReader完成了这个,但是可以使用sqlReader来获取多个表吗?如果我的第一个表是空的,我在SqlReader中看不到任何行.
可以使用sqlReader来获取多个表吗?
是.您必须按顺序读取每个表并.NextResult()在表之间调用方法.
using (var rdr = MySqlCommand.ExecuteReader())
{
do
{
while (rdr.Read())
{
//do something with each record
}
} while(rdr.NextResult());
}
Run Code Online (Sandbox Code Playgroud)