2017-04-17 123 views
-1

我想使用Asp.Net將數據插入到MYSQL數據庫,但我收到以下錯誤消息:由於System.InvalidOperationsException連接到數據庫失敗。連接必須有效且公開。 這是我在做什麼:如何使用Asp.net將數據插入到MySQL數據庫

protected void SU_Button_Click(object sender, EventArgs e) 
     { 
      string connectionString = @"Data Source=mno; Database=xyz; User ID=abc; Password=abc"; 
      using (MySqlConnection connection = new MySqlConnection(connectionString)) 
      { 
       try 
       { 
        string insertData = "insert into signup_table(firstname,surname,mobile_number,email_address,password," + 
             "confirm_password) values (@F_Name, @S_Name, @M_Number, @E_Address, @Password, @C_Password)"; 
        MySqlCommand command = new MySqlCommand(insertData, connection); 

        command.Parameters.AddWithValue("@F_Name",FN_TextBox.Text); 
        command.Parameters.AddWithValue("@S_Name", SN_TextBox.Text); 
        command.Parameters.AddWithValue("@M_Number", MN_TextBox.Text); 
        command.Parameters.AddWithValue("@E_Address", EA_TextBox.Text); 
        command.Parameters.AddWithValue("@Password", P_TextBox.Text); 
        command.Parameters.AddWithValue("@C_Password", CP_TextBox.Text); 
        int result = command.ExecuteNonQuery(); 
        connection.Open(); 
        MessageBox.Show("Connected to database"); 
        MessageBox.Show("Data inserted successfully"); 
       } 
       catch(Exception ex) 
       { 
        MessageBox.Show("Failed to connect to database due to" + ex.ToString()); 
        MessageBox.Show("Failed to insert data due to" + ex.ToString()); 
       } 

      } 
     } 

請建議一些東西。在此先感謝... :)

+1

你怎麼能執行一個查詢,而無需首先打開連接?這就像在沒有開門的情況下進入房屋內部。 – Rahul

+0

已更正。謝謝雖然.. :) – Deep

+0

我只是好奇,當你有這個錯誤時,你的思考過程是什麼?該錯誤清楚地表明連接需要打開,並且在打開連接之前會在該行之前拋出錯誤。 – mason

回答

1

您必須在執行查詢之前打開連接。

connection.Open(); 
    int result = command.ExecuteNonQuery(); 

也不要忘了在完成後關閉你的connecion。

+0

塔克你非常有效。這是多麼愚蠢的錯誤。我用一個使用語句創建了我的連接。這確保了連接對象將永遠處於可能的狀態。這也意味着我不需要關閉連接。 – Deep

0

改變這種

int result = command.ExecuteNonQuery(); 
connection.Open(); 

這個

connection.Open(); 
    int result = command.ExecuteNonQuery(); 
相關問題