业务逻辑层中的返回值不会更改

时间:2014-06-15 03:05:53

标签: c# asp.net

我必须在我的应用程序中使用三层架构。我必须在我的业务访问层中获取数据访问层返回值,但我无法在业务访问层中获取更改的值。

我的代码在页面后面

  protected void btnRegister_Click(object sender, EventArgs e)
            {
                if (IsPostBack)
                {
                    obj.empReg(txtUserName.Text, txtPassword.Text, isactive, Convert.ToInt32(hdntest.Value));

                    Response.Redirect("~/Login.aspx");
                }                               

            }

我的商家访问层: -

 public int empReg(string username, string password, int isactive, int returncode)
        {
           return obj.EmpRegistration(username, password, isactive, returncode);

        }

我的数据访问层: -

 public int EmpRegistration(string username, string password, int isactive, int returncode)
        {
            isactive = 1;
            string cs = ConfigurationManager.ConnectionStrings["EmployeeDB"].ConnectionString;
            using (SqlConnection connection = new SqlConnection(cs))
            {
                SqlCommand com = new SqlCommand("sp_RegisterationUser", connection);
                com.CommandType = CommandType.StoredProcedure;

                string encryptedpassword = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "SHA1");
                SqlParameter paramusername = new SqlParameter("@Username", username);
                com.Parameters.Add(paramusername);
                SqlParameter parampassword = new SqlParameter("@Password", encryptedpassword);
                com.Parameters.Add(parampassword);
                SqlParameter paramisactive = new SqlParameter("@isactive", isactive);
                com.Parameters.Add(paramisactive);
                connection.Open();               
                returncode = (int)com.ExecuteScalar();

                return returncode;
            }

        }

此处一切正常,但我的业务层中returncode参数值没有变化。我不知道如何在我的业务访问层中获取returncode参数。

2 个答案:

答案 0 :(得分:0)

你没有在任何地方获取/分配返回值。可能你正在寻找这样的东西,

int Result = obj.empReg(txtUserName.Text, txtPassword.Text, isactive, Convert.ToInt32(hdntest.Value));

答案 1 :(得分:0)

您可能需要进行以下更改,当您不使用时,无需在参数中发送返回码。

代码背后

 protected void btnRegister_Click(object sender, EventArgs e)
 { 
     //...      
     int iReturnCode = obj.empReg(txtUserName.Text, txtPassword.Text, isactive);

     //if(iReturnCode > 0)
     Response.Redirect("~/Login.aspx");                                        
 }

业务层

 public int empReg(string username, string password, int isactive)
 {
       return obj.EmpRegistration(username, password, isactive);
 }

数据访问层

public int EmpRegistration(string username, string password, int isactive)
{ 
   try
   {
     //...
     using (SqlConnection connection = new SqlConnection(cs))
     {
          //...            
          return Convert.ToInt32(com.ExecuteScalar());                
     }
   }
   catch{ return -1; }       
 }