InvalidOperationException未处理

时间:2011-03-10 11:21:23

标签: c# .net mysql sql ado.net

编译程序时,我没有收到任何错误,但是只要我单击“保存”按钮 我收到'InvalidOperationException未处理'。 cmd.ExecuteNonQuery(); 然后突出显示,我花了一段时间在这上面,没有运气。希望你能帮忙。

private void save_Click(object sender, EventArgs e)
{
    MySqlConnection con = new MySqlConnection("host=" ";user="";password=""; database="" ;");
    con.Open();

    MySqlCommand cmd = new MySqlCommand("INSERT INTO Staff (username, password, FirstName, SecondName, Phone, Email, Role, Phone 2, Fax)" + "values" + "("+username+","+password+","+Fname+","+Lname+","+Phone+","+email+","+role+","+Phone2+","+Fax+")");
    cmd.BeginExecuteNonQuery();
    cmd.ExecuteNonQuery();

    con.Close();            

    MessageBox.Show("Data Inserted");
    con.Close();          
}

2 个答案:

答案 0 :(得分:7)

在执行命令之前为您的命令分配连接:

cmd.Connection = con;

删除对BeginExecuteNonQuery的调用。它启动异步执行,然后直接启动同步执行。您的代码的结构方式,您希望使用同步方式。

答案 1 :(得分:1)

通过

定义命令的连接
cmd.Connection = con;

此外,您的查询似乎不正确。

MySqlCommand cmd = new MySqlCommand("INSERT INTO Staff (username, password, FirstName, SecondName, Phone, Email, Role, Phone 2, Fax)"
            +"values" +"('"+username+"','"+password+"','"+Fname+"','"+Lname+"','"+Phone+"','"+email+"','"+role+"','"+Phone2+"','"+Fax+"')");

您需要做的另一件事是重命名列名“Phone 2”,不要在列名中使用空格。