存储过程
ALTER procedure CheckUser
(
@logid varchar(50),
@pwd varchar(50),
@value varchar(50) output
)
as
select * from UserInfo where UserLogID=@logid and UserPwd=@pwd
set @value= @@rowcount
return @value我在程序中是
SqlCommand cmd = new SqlCommand("CheckUser", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@logid", logid));
cmd.Parameters.Add(new SqlParameter("@pwd", pwd));
SqlParameter returnvalue = new SqlParameter("@value", SqlDbType.Int, 4);
returnvalue.Direction = ParameterDirection.Output;
cmd.Parameters.Add(returnvalue);
count = Convert.ToInt32(cmd.Parameters["@value"].Value);
cmd.ExecuteNonQuery();
但是我获得传出值始终为0,为什么?是存储过程的问题还是程序的问题.
ALTER procedure CheckUser
(
@logid varchar(50),
@pwd varchar(50),
@value varchar(50) output
)
as
select * from UserInfo where UserLogID=@logid and UserPwd=@pwd
set @value= @@rowcount
return @value我在程序中是
SqlCommand cmd = new SqlCommand("CheckUser", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@logid", logid));
cmd.Parameters.Add(new SqlParameter("@pwd", pwd));
SqlParameter returnvalue = new SqlParameter("@value", SqlDbType.Int, 4);
returnvalue.Direction = ParameterDirection.Output;
cmd.Parameters.Add(returnvalue);
count = Convert.ToInt32(cmd.Parameters["@value"].Value);
cmd.ExecuteNonQuery();
但是我获得传出值始终为0,为什么?是存储过程的问题还是程序的问题.
参数最好一致。@value int output
RetrunValue是在存储过程中通过return 关键字返回值的.在.net中必须指定其ParameterDirection.ReturnValue.并且如果你是用ExecuteDataReader()方法来执行存储过程的话,必须先关闭数据库连接对象,才能得到其值.
declare @value int
select @value=count(*) from UserInfo where UserLogID=@logid and UserPwd=@pwd
select @value看看@value是0还是1
(
@logid varchar(50),
@pwd varchar(50),
@value varchar(50) output
)
as
select * from UserInfo where UserLogID=@logid and UserPwd=@pwd
set @value= @@rowcount
return @value 如果用输出参数一般不用return了(我觉得返回值跟输出参数你没搞明白)
cmd.ExecuteNonQuery();// 这里应该先执行
count = Convert.ToInt32(cmd.Parameters["@value"].Value);
//只用连接关闭后才能取值的
count = Convert.ToInt32(cmd.Parameters["@value"].Value);
ALTER procedure CheckUser
(
@logid varchar(50),
@pwd varchar(50),
@value varchar(50) output
)
as
select * from UserInfo where UserLogID=@logid and UserPwd=@pwd 在程序中直接用int count=dr.cmd.executeReader();这样子执行,然后判断count的值
return @value 如果用输出参数一般不用return了(我觉得返回值跟输出参数你没搞明白)
有什么区别?那个会更使用一些呢?
(
@logid varchar(50),
@pwd varchar(50),
@value int output
)
as
select @value=count(*) from UserInfo where UserLogID=@logid UserPwd=@pwd
cmd.ExecuteNonQuery();
count =cmd.Parameters["@value"].Value;