2011-03-10 67 views
0

當我編譯程序時,我收到沒有錯誤,但只要我點擊保存按鈕 我收到'InvalidOperationException was unhandled'。 cmd.ExecuteNonQuery();然後突出顯示,我花了一段時間在這個,沒有運氣。希望你能幫助。InvalidOperationException被未處理

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();   
} 
+1

你的'MySqlCommand'對象如何知道'MySqlConnection';)? – Kevin 2011-03-10 11:23:48

+1

在查詢中使用參數,它將爲您節省sql注入。 – 2011-03-10 11:30:08

回答

7

執行前分配給你的命令的連接:

cmd.Connection = con; 

,並刪除調用BeginExecuteNonQuery。它啓動一個異步執行,然後直接啓動一個同步執行。你的代碼結構的方式,你想使用同步的方式。

+0

除了System.Windows.Forms.TextBox之外,所有正在運行的...每次登錄前的文本!但它插入這麼多的感謝。 – 2011-03-10 12:10:46

+0

@Joe Bell:如果您在查詢中使用的變量是您的文本框,請將您的查詢更改爲使用「 .Text」。 'username.Text'。 – 2011-03-10 12:14:13

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+"')"); 

一件事是重命名列名「手機2」,不列名使用空間。

+0

除了System.Windows.Forms.TextBox,每個入口之前的文本都可以正常工作!但它插入這麼多的感謝。 – 2011-03-10 12:10:30