开发者

returning int value from stored procedure and check it in asp.net code to validate login form

What is the true sequence to make this code run as I tried many time but I don't get a valid result

// the code of SQL stored procedure

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[login_proc] @username Varchar =50, @password varchar=50
as
Declare @user_name varchar , @pass_word varchar, @result varchar 
Set @user_name = @us开发者_Go百科ername
Set @pass_word = @password

if EXISTS (select username , password from data where username= @user_name) 
set @result= 1
else 
set @result=0

return @result

and asp.net code is

 SqlConnection conn = new SqlConnection ("Data Source=ANAGUIB-LAPNEW\\SQLEXPRESS;Initial Catalog=account;Integrated Security=True");
        SqlCommand cmd = new SqlCommand("login_proc",conn);
          cmd.CommandType = CommandType.StoredProcedure;
          SqlParameter paramReturnValue = new SqlParameter();
          paramReturnValue.ParameterName = "@result";
           paramReturnValue.SqlDbType = SqlDbType.Int;
           cmd.Parameters.Add(paramReturnValue);
           cmd.Parameters["@result"].Direction = ParameterDirection.Output;
           conn.Open();

         cmd.Parameters.AddWithValue("@username", TextBox1.Text);
         cmd.Parameters.AddWithValue("@password", TextBox2.Text);
         cmd.ExecuteScalar();
         string retunvalue = (string)cmd.Parameters["@result"].Value;

         if (retunvalue == "1")
        {
            Response.Redirect("hello.aspx");
        }
        else 
        {
            Response.Write("error");
        }

        conn.Close();


You're executing .ExecuteScalar() so you're expecting back a result set with a single row, single column from the stored procedure - but you're not selecting anything at the end of your stored proc!

You need to change your last line in the stored proc from

return @result

to

SELECT @result

and then it should work.


Add another parameter for the return value

ALTER PROC [dbo].[login_proc] 
  @username Varchar = 50, 
  @password Varchar = 50,
  @result int OUTPUT

Examples can be viewd here.


Did you try this one; Use the

return  @result

and in c#

int resultID = Convert.ToInt32(cmd.ExecuteScalar());

Also remove next line

cmd.Parameters[""].value;

I'm unable to login any suggestions, both in case of stored procedure and codebehind can anyone provide solution to this,,,plz,,,

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜