从数据类型 varchar 转换为 numeric 时出错。

zhaoyang86 2009-04-18 04:26:48
我的存储过程为:
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
...全文
1594 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengjian_428 2009-06-11
  • 打赏
  • 举报
回复
插入decimal字段时 用ISNULL判断 为空则赋值为0
zhaoyang86 2009-04-18
  • 打赏
  • 举报
回复
我也知道定义成varchar好操作,但要求必须是decimal,所以哪位高手帮忙解决一下..
yangtzeu 2009-04-18
  • 打赏
  • 举报
回复
可以将 @uid decimal(8,0) output,
定义成varchar类型

62,268

社区成员

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

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

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

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