2023年6月21日发(作者:)

使⽤SqlDataReader获取输出参数终于解决使⽤SqlDataReader获取输出参数的问题了!根本原因还是对SqlDataReader这个数据读取器的不深⼊了解! 先看⼀下我的例⼦: create procedure H_transfer ( @returnValue varchar(10) output ) as declare @IsAnswer char(2) select @IsAnswer=IsAnswer from Question if(IsAnswer=1) begin set @returnValu='已处理' end else(IsAnswer=0) begin set @returnValue='未处理' end⼀开始我在程序中,是这样调⽤的(我使⽤了main类中的⼀个静态的⽅法creataSdr) SqlParameter[] paras=new SqlParameter[1] paras[0]=new SqlParameter("@returnValue",r,10);

SqlDataReader sdr=Sdr("H_Transfer",paras);if(()){ =paras[0].ng();}但事实上会报错说“未经对象引⽤到实例”,就是说未获取到值 错误的原因就是在获取存储过程中的输出参数或返回类型的参数时,我们必须在关闭SqlDataReader对象后才能给输出参数或返回值类型的参数赋值 程序应该改成这样: SqlParameter[] paras=new SqlParameter[1]; paras[0]=new SqlParameter("@returnValue",r,10); paras[0].Direction=; SqlDataReader sdr=Sdr("H_Transfer",paras); sult();//这是关键,通过这⾏表明已经把上⼀条给读出来了,相 //当于把上⼀条记录的sdr已经关闭了 =paras[0].ng(); 通过这样我们就可以获取输出参数和返回值参数了 如果我们使⽤DataTable或DataSet的话不会出现这种情况,因为数据已经全部放到内存中去了 我也是参考了⽹上⼀位⾼⼿的博客才搞懂的,遗憾的是我没有记住那位⾼⼿的博客地址 好了先这样吧,如果有什么新情况我会及时转告⼤家的!

2023年6月21日发(作者:)

使⽤SqlDataReader获取输出参数终于解决使⽤SqlDataReader获取输出参数的问题了!根本原因还是对SqlDataReader这个数据读取器的不深⼊了解! 先看⼀下我的例⼦: create procedure H_transfer ( @returnValue varchar(10) output ) as declare @IsAnswer char(2) select @IsAnswer=IsAnswer from Question if(IsAnswer=1) begin set @returnValu='已处理' end else(IsAnswer=0) begin set @returnValue='未处理' end⼀开始我在程序中,是这样调⽤的(我使⽤了main类中的⼀个静态的⽅法creataSdr) SqlParameter[] paras=new SqlParameter[1] paras[0]=new SqlParameter("@returnValue",r,10);

SqlDataReader sdr=Sdr("H_Transfer",paras);if(()){ =paras[0].ng();}但事实上会报错说“未经对象引⽤到实例”,就是说未获取到值 错误的原因就是在获取存储过程中的输出参数或返回类型的参数时,我们必须在关闭SqlDataReader对象后才能给输出参数或返回值类型的参数赋值 程序应该改成这样: SqlParameter[] paras=new SqlParameter[1]; paras[0]=new SqlParameter("@returnValue",r,10); paras[0].Direction=; SqlDataReader sdr=Sdr("H_Transfer",paras); sult();//这是关键,通过这⾏表明已经把上⼀条给读出来了,相 //当于把上⼀条记录的sdr已经关闭了 =paras[0].ng(); 通过这样我们就可以获取输出参数和返回值参数了 如果我们使⽤DataTable或DataSet的话不会出现这种情况,因为数据已经全部放到内存中去了 我也是参考了⽹上⼀位⾼⼿的博客才搞懂的,遗憾的是我没有记住那位⾼⼿的博客地址 好了先这样吧,如果有什么新情况我会及时转告⼤家的!