comment utiliser la valeur de return de la procédure stockée dans le code pour vérifier

Voici ma procédure stockée SQL Server pour vérifier les informations d'identification de l'user.

ALTER procedure [dbo].[ValidateUserCredentials] @Username varchar(50), @Password varchar(50), @result varchar(50) out AS BEGIN IF EXISTS(select Username, Password from Users where Username = @Username AND Password = @Password) BEGIN set @result = 1 END ELSE BEGIN set @result = 0 END END 

Voici ma méthode dans la class de réutilisation.

 public bool executeInsertprocedure(ssortingng spName, SqlParameter[] sqlParameters, out ssortingng message) { SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = spName; cmd.Parameters.AddRange(sqlParameters); conn.Open(); try { cmd.ExecuteNonQuery(); message = sqlParameters[sqlParameters.Length - 1].Value.ToSsortingng(); return true; } catch { message = "Something is wrong!"; return false; } } 

Ici, je l'appelle dans mon BLL.

 public void verifyUserCredentials(ssortingng userName, ssortingng password,ssortingng message,out ssortingng sp_message) { SqlParameter[] param = new SqlParameter[3]; param[0] = new SqlParameter("@UserName", SqlDbType.VarChar); param[0].Value = userName; param[1] = new SqlParameter("@Password", SqlDbType.VarChar); param[1].Value = password; param[2] = new SqlParameter("@result", SqlDbType.VarChar); param[2].Direction = ParameterDirection.Output; //param[2].Value = sp_message; objRuse = new Reuse(); objRuse.executeInsertprocedure("ValidateUserCredentials", param, ??); } 

et voici ma page de connection.

 protected void btnSignin_Click(object sender, EventArgs e) { objBll = new bll(); objBll.verifyUserCredentials(txtSignInUsername.Text,txtSignInPassword.Text, ??); if(?? == true) { Session["Username"]=txtSignInUsername; Response.Redirect("Default.aspx"); } else { Response.Redirect("Login.aspx"); } } 

Ce que je devrais mettre ?? endroits dans mon code. Comment puis-je get la valeur returnnée de la procédure stockée.

Changez votre procédure pour avoir @result int out ou @result bit out au lieu de varchar(50)

Changer la méthode executeInsertprocedure

 public bool executeInsertprocedure(ssortingng spName, SqlParameter[] sqlParameters, out int message) { try { cmd.ExecuteNonQuery(); message = cmd.Parameters["@result"].Value; (message == 1) ? return true : return false; } } 

votre méthode verifyUserCredentials

 public void verifyUserCredentials(ssortingng userName, ssortingng password,ssortingng message,out int sp_message) { objRuse = new Reuse(); objRuse.executeInsertprocedure("ValidateUserCredentials", param, sp_message); } 

Votre événement btnSignin_Click

 protected void btnSignin_Click(object sender, EventArgs e) { int errorid; objBll = new bll(); if(objBll.verifyUserCredentials(txtSignInUsername.Text,txtSignInPassword.Text, out errorid)) { Session["Username"]=txtSignInUsername; Response.Redirect("Default.aspx"); } else { //Else part code } }