2015-12-31 174 views
1

在C#ASP.net中使用3層體系結構爲什麼我的註冊函數在ASP.NET中不起作用?

最初我從c-sharp頁面檢索所有asp.net屬性。

protected void Register_Click(object sender, EventArgs e) 
    { 
     String fname = this.firstname.Text; 
     String lname = this.lastname.Text; 
     String username = this.username.Text; 
     String address = this.address.Text; 
     String gender = this.gender.Text; 
     String age = this.age.Text; 
     String pwd = this.password.Text; 
     String cpwd = this.cpassword.Text; 
     String secQ = this.secQ.Text; 
     String secA = this.secA.Text; 

     UserOp userop = new UserOp(); 

     if (userop.signup(fname, lname, username, address, gender, age, pwd, secQ, secA)) 
     { 
      Response.Redirect("home.aspx"); 
     } 
     else 
     { 
      Response.Redirect("index.aspx"); 
     } 


    } 

和第二層將包括以下方法

public bool signup(String fname,String lname,String username,String address,String gender,String age, 
       String password, String secQ, String secA) 
    { 
     user = new User(fname,lname,username,address,gender,age,password,secQ,secA); 

     userdata.addUser(user); 
     return true; 
    } 

的最後數據訪問層將包括這增加了用戶數據庫的SQL部分。

private SqlConnection con; 
    private SqlDataAdapter sda; 
    private SqlCommand command; 
    private SqlDataReader sdr; 


    public UserData() 
    { 
     con = new SqlConnection("Data Source=WIN-5KGBCLFK1FJ;Initial Catalog=thedb;Integrated Security=True"); 
     sda = new SqlDataAdapter(); 
    } 


    public Boolean addUser(User user) 
    { 



     try 
     { 
     // con.Open(); 
      sda.InsertCommand = new SqlCommand("INSERT INTO tbluser VALUES ('" + user.Fname + "','" + user.Lname + "','" + user.Username + "','" + user.Age + "','" + user.Sex + "','" + user.Country + "','" + user.Password + "','" + user.SecQ + "','" + user.SecA + "')", con); 
      con.Open(); 
      sda.InsertCommand.ExecuteNonQuery(); 
      con.Close(); 
      return true; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 

    } 

認爲這是SQL部分錯誤,我將其更改爲以下代碼,但發生同樣的異常。

sda.InsertCommand = new SqlCommand ("INSERT INTO tbluser (fName,lName,username,age,sex,country, password, secQ, secA) VALUES (@fname,@lname,@username,@age,@sex,@country,@password,@secQ,@secA)",con); 
     sda.InsertCommand.Parameters.Add("@fname", SqlDbType.VarChar).Value = user.Fname; 
     sda.InsertCommand.Parameters.Add("@lname", SqlDbType.VarChar).Value = user.Lname; 
     sda.InsertCommand.Parameters.Add("@username", SqlDbType.VarChar).Value = user.Username; 
     sda.InsertCommand.Parameters.Add("@age", SqlDbType.VarChar).Value = user.Age; 
     sda.InsertCommand.Parameters.Add("@sex", SqlDbType.VarChar).Value = user.Sex; 
     sda.InsertCommand.Parameters.Add("@country", SqlDbType.VarChar).Value = user.Country; 
     sda.InsertCommand.Parameters.Add("@password", SqlDbType.VarChar).Value = user.Password; 
     sda.InsertCommand.Parameters.Add("@secQ", SqlDbType.VarChar).Value = user.SecQ; 
     sda.InsertCommand.Parameters.Add("@secA", SqlDbType.VarChar).Value = user.SecA; 
     con.Open(); 
     sda.InsertCommand.ExecuteNonQuery(); 
     con.Close(); 
     return true; 

InvalidOperationException異常Unhanded由用戶代碼 「System.InvalidOperationException」類型的異常出現在DataAccessLayer.dll但在用戶代碼中沒有處理

的用戶記錄似乎不正在添加到數據庫表中。

回答

1

你試圖打開你addUser方法連接兩次 ..刪除它們任..爲SqlConnection.Open()

Exception Description

try 
{ 
    //con.Open(); //Not Needed 
    sda.InsertCommand = new SqlCommand("INSERT INTO tbluser VALUES ('" + user.Fname + "','" + user.Lname + "','" + user.Username + "','" + user.Age + "','" + user.Sex + "','" + user.Country + "','" + user.Password + "','" + user.SecQ + "','" + user.SecA + "')", con); 
    con.Open(); 
    sda.InsertCommand.ExecuteNonQuery(); 
    con.Close(); 
    return true; 
} 

檢查異常文檔

相關問題