从数据类型 varchar 转换为 numeric 时出错。
我的存储过程为:
create PROCEDURE UserLogin
( @mail varchar(40),
@pwd varchar(16),
@uid decimal(8,0) output,
@reason varchar(50) output
)
as
select User_ID from user_table where Email =@mail
if (@@RowCount<1) --不从在用户
begin ----1
set @reason ='noUser'
set @uid=''
end------1
else -------用户存在
begin ----2
SELECT User_ID FROM user_table
WHERE (Email = @mail) AND (pwd = @pwd )
if (@@RowCount<1) --用户名对,密码错误
begin -----3
set @reason ='pError'
set @uid=''
end-------3
else ----用户名与密码都正确
begin ------4
set @reason ='access'
SELECT @uid=User_ID FROM user_table WHERE (Email = @mail) AND (pwd = @pwd )
end -----4
end------2
RETURN
cs后台代码为:
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CIS"].ConnectionString);
///////////
SqlCommand myCommand = new SqlCommand("UserLogin", conn);
myCommand.CommandType = CommandType.StoredProcedure;
//参数一
SqlParameter parameterMail = new SqlParameter("@mail", SqlDbType.VarChar,40);
parameterMail.Value =TextBox_mail.Text.ToString ().Trim ();
myCommand.Parameters.Add(parameterMail);
//参数二
SqlParameter parameterPwd = new SqlParameter("@pwd", SqlDbType.VarChar, 16);
parameterPwd.Value = TextBox_pwd.Text.ToString().Trim();
myCommand.Parameters.Add(parameterPwd);
//参数三
SqlParameter parameterUid = new SqlParameter("@uid", SqlDbType.Decimal);
parameterUid.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterUid);
//参数四
SqlParameter parameterReason = new SqlParameter("@reason", SqlDbType.VarChar,50);
parameterReason.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterReason);
/////////////////////
conn.Open();
myCommand .ExecuteNonQuery ();//运行时报错的地方,错误为:从数据类型 varchar 转换为 numeric 时出错。
conn.Close();
////////////////////
string LoginID;
decimal id;
string Result="";
if(parameterReason.Value.ToString ()=="access")
{
id = (decimal)parameterUid.Value;
Session["uid"] = id;
Response.Redirect("index.aspx");
}
else if(parameterReason.Value.ToString ()=="noUser")
{
Label_message .Text ="用户名错误,请核实!!";
LoginID="usererror";
}
else if(parameterReason.Value.ToString ()=="pError")
{
Label_message .Text ="密码错误";
LoginID="pwderror";
}
************************************
我想实现的是当用邮箱和密码登录成功后,返回数据库中的用户id部分,该字段的类型是decimal