2017-04-17 124 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(); 
相关问题