高手救我...

LXY2010 2006-04-21 04:48:15
通过SqlCommand的ExecuteReader方法获取存储过程的返回值或者输出参数的问题

我使用SqlCommand的ExecuteReader方法执行一个存储过程,获取一个SqlDataReader对象,使用完后,我也关闭了该对象,但为什么我还无法获取存储过程的输出参数呢?

部分原代码:
int UserID = -1;
string[] str;

//设置参数
SqlParameter[] prams = {
CExecProc.MakeInParam("@UserNO", SqlDbType.VarChar, 32, UserNO),
CExecProc.MakeInParam("@Password", SqlDbType.VarChar, 32, assword),
CExecProc.MakeInParam("@IPAddress", SqlDbType.VarChar, 16, IPAddress),
CExecProc.MakeInParam("@ComputerName", SqlDbType.VarChar, 32, ComputerName),
CExecProc.MakeOutParam("@UserID", SqlDbType.Int, 4)//此为输出参数
};

//获取一个SqlDataReader对象
SqlDataReader dr= CExecProc.ExecProcResultInfo("SPLogin",prams,out str);

while (dr.Read());
dr.Close();
UserID = (int) prams[4].Value;//发生错误的语句
return UserID;

------------------------------------------------------------------------------
异常信息:
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:
行 39: while (dr.Read());
行 40: dr.Close();
行 41: UserID = (int) prams[4].Value;
行 42: return UserID;
...全文
97 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Knight94 2006-04-22
参看如下文章的存储过程调用方法
http://blog.csdn.net/knight94/archive/2006/03/23/635885.aspx

  • 打赏
  • 举报
回复
LXY2010 2006-04-22
怎么都没有人回啊!
难道没有人遇到过这样的问题???
  • 打赏
  • 举报
回复
LXY2010 2006-04-21
谢谢各位...
希望高手帮帮啊...
  • 打赏
  • 举报
回复
LXY2010 2006-04-21
高手帮我看看啊...
  • 打赏
  • 举报
回复
LXY2010 2006-04-21
7712190()
不行啊!

我把MakeOutParam方法改了也还是不行啊!

然后取UserID的值就可以了
你指的是怎样取呢?
  • 打赏
  • 举报
回复
7712190 2006-04-21
int UserID
修改最后一个为这样 :
CExecProc.MakeOutParam("@UserID", SqlDbType.Int, 4,UserID)//此为输出参数

然后取UserID的值就可以了

注意要在存储过程中 返回INT类型
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2006-04-21 04:48
社区公告

让您成为最强悍的C#开发者