我正在研究SQLHelper类。以及如何获得@Email值 ????????
protected void Button1_Click(object sender, EventArgs e)
{
try
{
bl.user_id = TextBox1.Text;
DataTable dt= bl.forget();
if (dt.Rows.Count != 0)
{
Response.Write( dt.Rows[0]["@Email"].ToString());
}
}
catch (Exception g)
{
Response.Write(g.Message);
}
}
Bll part .......
DataSet ds = SqlHelper.ExecuteDataset(bl.str, CommandType.StoredProcedure,
"forFetPasswo",new SqlParameter("@Email", bl.user_id));
DataTable dt = new DataTable();
if (ds.Tables.Count != 0)
{
dt = ds.Tables[0];
}
return dt;
sql part .......
Alter PROCEDURE Abc
@Email nvarchar(100)output
AS
BEGIN
if (@Email !=null)
begin
if exists(select * from UserLogin where Emailid =@Email )
begin
select @Email ='mail send'
end
end
else
begin
select @Email='invalid email id'
end
END
GO
答案 0 :(得分:0)
您正在返回输出参数,但未在.net代码中处理它。您正在寻找数据集。
快速解决方法是在最后添加select @Email AS email
到您的存储过程
否则,请将new SqlParameter
更改为另一个overload that uses direction
答案 1 :(得分:0)
在你的存储过程中你只分配@Email变量,你应该在存储过程的末尾添加类似的东西
select @Email as Email
并在代码
中访问它Response.Write( dt.Rows[0]["Email"].ToString());
并删除output
参数;)
答案 2 :(得分:0)
在您的情况下使用用户数据集或输出参数... 由于您只返回一个值....使用输出参数。
var param=new SqlParameter("@Email",SqlDBType.VarChar,100).Direction=ParameterDirection.Output;
SqlHelper.ExecuteNonQuery(con,Abc,param);
var Email=param.Value.toString();
同样在SP中使用SET代替SELECT,如果你可以....顺便说一下它没关系