2011-03-10 8 views
0

プログラムをコンパイルするときにエラーが表示されますが、保存ボタンをクリックするとエラーは発生しません。 'InvalidOperationException was unhandled'が表示されます。 cmd.ExecuteNonQuery();これがハイライト表示され、この間にIVEがしばらく費やされました。あなたが手伝ってくれることを願います。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

+1

クエリでパラメータを使用すると、SQLインジェクションからユーザを保護します。 –

答えて

7

それを実行する前に、あなたのコマンドへの接続を割り当てます。

cmd.Connection = con; 

そしてBeginExecuteNonQueryへの呼び出しを削除します。それは非同期実行を開始し、同期実行を開始した直後に開始します。あなたのコードが構造化されているので、あなたは同期的な方法を使いたいと思っていました。

+0

すべての作業の前に... System.Windows.Forms.TextBoxとは別に、すべての作業が完了します。しかし、それは非常に多くの感謝を挿入します。 –

+0

@Joe Bell:クエリで使用する変数がテキストボックスの場合は、クエリに「 .Text」を使用するように変更します。 'username.Text'。 –

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とは別に、すべての作業の前にText!しかし、それは非常に多くの感謝を挿入します。 –

関連する問題