2013-04-14 125 views
0

我寫了這些代碼塊:OleDbConnection連接錯誤

ConnectDB.getConStr();

  string query = "insert into users (memberName,memberSurname,memberEmail,userName,userPassword) values(@mn,@msn,@me,@un,@up)"; 
     OleDbCommand cmd = new OleDbCommand(query,ConnectDB.getConStr()); 
     cmd.Parameters.AddWithValue("@mn", txtName.Text); 
     cmd.Parameters.AddWithValue("@msn", txtSurname.Text); 
     cmd.Parameters.AddWithValue("@me", txtEmail.Text); 
     cmd.Parameters.AddWithValue("@un", txtUsername.Text); 
     cmd.Parameters.AddWithValue("@up", txtPassword.Text); 

     try 
     { 
      ConnectDB.getConStr().Open(); 
      cmd.ExecuteNonQuery(); 
      ConnectDB.getConStr().Close(); 
      ltrMesaj.Text = "Record has been added"; 
      Response.Redirect("Login.aspx"); 
     } 
     catch (Exception ex) 
     { 
      ltrMesaj.Text = ex.Message; 
     } 

但是我得到了這樣的錯誤:ExecuteNonQuery需要一個開放的可用Connection。連接的當前狀態已關閉。

我該如何解決這個問題?

回答

0

您正在創建新的instancesconnection每次訪問它時。所以只能創建一個instance和使用它像這樣

OleDbConnection connection= ConnectDB.getConStr(); 
    string query = "insert into users (memberName,memberSurname,memberEmail,userName,userPassword) values(@mn,@msn,@me,@un,@up)"; 
     OleDbCommand cmd = new OleDbCommand(query,connection); 
     cmd.Parameters.AddWithValue("@mn", txtName.Text); 
     cmd.Parameters.AddWithValue("@msn", txtSurname.Text); 
     cmd.Parameters.AddWithValue("@me", txtEmail.Text); 
     cmd.Parameters.AddWithValue("@un", txtUsername.Text); 
     cmd.Parameters.AddWithValue("@up", txtPassword.Text); 

     try 
     { 
      connection.Open(); 
      cmd.ExecuteNonQuery(); 
      connection.Close(); 
      ltrMesaj.Text = "Record has been added"; 
      Response.Redirect("Login.aspx"); 
     } 
     catch (Exception ex) 
     { 
      ltrMesaj.Text = ex.Message; 
     } 
+0

我仍然得到了同樣的錯誤:( –

+0

更新了我的答案,並寫了一個code.Take看看,讓我知道如果遇到任何問題 – Sachin

+0

我已經使用'SqlConnection'因爲我錯過了你正在使用'OleDbCommand',所以只需要將Sql改爲OleDb。那麼我已經更新了這篇文章。 – Sachin