SqlDataReader的问题

qlks 2005-07-26 12:50:03
我的一个存储过程
CREATE PROC procGet(@count int OUTPUT)
AS
select @count=COUNT(id) from member
select * from member
然后在程序中用SqlDataReader读取出所有数据
但是我无法取得@count这个OUTPUT的值
好像根本就没有执行一样
但是用ExecuteNonQuery就可以取得
请问SqlDataReader是不是不可以取出OUTPUT的值
这样的话我不是要访问两次数据库才能完成以上功能了?
...全文
195 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
aspczlover 2005-11-29
  • 打赏
  • 举报
回复
这和是不是output没关系

获取多个结果的例子给你



cn.Open();

string strSQL =”select CustomerID,CompanyName from Customers;”+“select OrderID,CustomerID from Orders;”;

SqlCommand cmd=new SqlCommand(strSQL,cn);

SqlDataReader rdr=cmd.ExecuteReader();

do

{

while(rdr.Read())

Console.WriteLine(rdr[0]+rdr[1]);

Console.WriteLine();

}while(rdr.NextResult());//获取下一个select结果


张海霖 2005-09-15
  • 打赏
  • 举报
回复
NextResult()或者Table[x]
zyhjolly 2005-07-26
  • 打赏
  • 举报
回复
用DataReader的NextResult()获取下一个结果集
qlks 2005-07-26
  • 打赏
  • 举报
回复
怎么分别来读取两个记录集呢?
mapserver 2005-07-26
  • 打赏
  • 举报
回复
To coldpanth(云之飘渺):ExecuteReader可以返回值,但是得不到Output参数的值。

不要用ExecuteNonQuery或者ExecuteReader,请参考:
SqlConnection connection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlDataAdapter command = new SqlDataAdapter("OS_OrdersDetail", connection);

command.SelectCommand.CommandType = CommandType.StoredProcedure;

SqlParameter parameterOrderID = new SqlParameter("@OrderID", SqlDbType.Int, 4);
parameterOrderID.Value = orderID;
command.SelectCommand.Parameters.Add(parameterOrderID);

SqlParameter parameterOrderDate = new SqlParameter("@OrderDate", SqlDbType.DateTime, 8);
parameterOrderDate.Direction = ParameterDirection.Output;
command.SelectCommand.Parameters.Add(parameterOrderDate);

SqlParameter parameterOrderTotal = new SqlParameter("@OrderTotal", SqlDbType.Money, 8);
parameterOrderTotal.Direction = ParameterDirection.Output;
command.SelectCommand.Parameters.Add(parameterOrderTotal);

DataSet dataSet = new DataSet();
command.Fill(dataSet, "OrderItems");

// 返回订单中每个小项的详细信息
OrderDetails orderDet = new OrderDetails();

orderDet.OrderDate = (DateTime)parameterOrderDate.Value;
orderDet.OrderTotal = (decimal)parameterOrderTotal.Value;

orderDet.OrderItems = dataSet;

return orderDet;
自然框架 2005-07-26
  • 打赏
  • 举报
回复
select @count=COUNT(id) from member
select @count
select * from member

还可以这么写,会返回两个记录集,第一个是总记录数( @count)
第二个是列表(select * from member)
qlks 2005-07-26
  • 打赏
  • 举报
回复
我的代码没有问题啊
如果用ExecuteNonQuery这个函数
同样是上述的代码可以取到OUTPUT的值
coldpanth 2005-07-26
  • 打赏
  • 举报
回复
ExecuteReader应该是取不到返回值,也就是ReturnValue,但输出参数OUTPUT是肯定可以取到的,估计有可能你的数据访问部分代码有问题,跟踪一下看看

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧