2011-06-27 17 views
1

私はVisual Studio 2010とMySQLを初めて使用しています。私は、ユーザーがデータベースに追加する情報を入力するフォームを作成しています。エラーは発生しませんが、MySQLをチェックすると、入力したデータはデータベースに保存されませんでした。誰かが私のコードの誤りや正当性の欠如をチェックできますか?助けてください。ありがとう。ここでデータベースに何も保存されていません

は私のコードです:

private void button_adduser_Click(object sender, EventArgs e) 
    { 
     string MyConString = "SERVER=localhost;" + "DATABASE=timekeeping;" + "UID=root;" + "PASSWORD=admin;"; 
     MySqlConnection connection = new MySqlConnection(MyConString); 
     MySqlCommand command = connection.CreateCommand(); 
     command.Connection = connection; 

     command.CommandText = "insert into users(addfname, addmname, addlname, addposition, addcontact, addemail, addbday, addusername, addpassword) values(@fname, @mname, @lname, @position, @contactnumber, @emailadd, @birthday, @username, @password)"; 
     command.Parameters.Add(new MySqlParameter("@fname", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@mname", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@lname", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@position", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@contactnumber", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@emailadd", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@birthday", SqlDbType.Date)); 
     command.Parameters.Add(new MySqlParameter("@username", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@password", SqlDbType.VarChar)); 
     command.Parameters["@fname"].Value = addfname.Text.ToLower(); 
     command.Parameters["@mname"].Value = addmname.Text.ToLower(); 
     command.Parameters["@lname"].Value = addlname.Text.ToLower(); 
     command.Parameters["@position"].Value = addposition.Text; 
     command.Parameters["@contactnumber"].Value = addcontact.Text; 
     command.Parameters["@emailadd"].Value = addemail.Text; 
     command.Parameters["@birthday"].Value = addbday.Text; 
     command.Parameters["@username"].Value = addusername.Text; 
     command.Parameters["@password"].Value = addpassword.Text; 
     connection.Open(); 

     MessageBox.Show("Data Saved"); 

    } 
+2

答えとして、command.ExecuteNonQuery();を追加します。最後に、IDisposableを実装するものについてはusingステートメントを使用します。データベース接続。 http://msdn.microsoft.com/en-us/library/yh598w02.aspx – nickytonline

答えて

4

command.ExecuteNonQuery()を使用してみてください。また、単一の値(たとえば、新しく挿入されたレコードのID)を返す場合は、command.ExecuteScalar()を使用できます。また、usingステートメントを使用して、Disposeメソッドがコマンドと接続用に呼び出されていることを確認する必要があります。コード全体は、次のようになります。

using(MySqlConnection connection = new MySqlConnection(MyConString)) 
{ 
    connection.Open(); 
    using(MySqlCommand command = connection.CreateCommand()) 
    { 
     command.CommandText = "insert into users(addfname, addmname, addlname, addposition, addcontact, addemail, addbday, addusername, addpassword) values(@fname, @mname, @lname, @position, @contactnumber, @emailadd, @birthday, @username, @password)"; 
     command.Parameters.Add(new MySqlParameter("@fname", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@mname", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@lname", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@position", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@contactnumber", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@emailadd", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@birthday", SqlDbType.Date)); 
     command.Parameters.Add(new MySqlParameter("@username", SqlDbType.VarChar)); 
     command.Parameters.Add(new MySqlParameter("@password", SqlDbType.VarChar)); 
     command.Parameters["@fname"].Value = addfname.Text.ToLower(); 
     command.Parameters["@mname"].Value = addmname.Text.ToLower(); 
     command.Parameters["@lname"].Value = addlname.Text.ToLower(); 
     command.Parameters["@position"].Value = addposition.Text; 
     command.Parameters["@contactnumber"].Value = addcontact.Text; 
     command.Parameters["@emailadd"].Value = addemail.Text; 
     command.Parameters["@birthday"].Value = addbday.Text; 
     command.Parameters["@username"].Value = addusername.Text; 
     command.Parameters["@password"].Value = addpassword.Text; 

     //Execute command 
     command.ExecuteNonQuery(); 
    } 
} 
+0

助けてくれてありがとう。私は新しい問題がある。追加をクリックすると、「入力文字列が正しい形式ではありません」というエラーメッセージが表示されます。これは何が原因でしょうか? – sean

+1

@schadi:新しい質問を開きます。スタックトレースと*全体の*エラーメッセージを必ず入れてください。あなたが使用しているコードを投稿し、エラーが発生している正確な行を指摘したいかもしれません。 – NotMe

+0

@Chris Lively:そうです。ありがとうございます.. – sean

0

あなたは、パラメータを追加し、接続をオープンしましたが、コマンドを実行するのを忘れていました。あなたのアラートボックスの前に置く

command.ExecuteNonQuery(); 

追加のボーナスとして、おそらくusingステートメントで物をラップしたいと思うでしょう。これにより、オブジェクトが正しく廃棄され、接続が閉じられます。

using (MySqlConnection connection = new MySqlConnection(MyConString)) 
{ 
    using (MySqlCommand command = connection.CreateCommand()) 
    { 
     command.Connection = connection; 
     /// the rest of your database code goes here 
     command.ExecuteNonQuery(); 
} 

MessageBox.Show("Data Saved"); 
0

接続を開いた後に、忘れ去られたcommand.ExecuteNonQuery();

2

コマンドを実行できませんでした。お試しください:

connection.Open(); 
command.ExecuteNonQuery(); 
0

保存するコマンドを実行する必要があります。接続を開くだけです。

+0

を参照してください。OPに何があるのか​​を伝える必要があります。何か基本的なことを忘れた場合、何をする必要があるか分からないことがあります。 – RyanR

0

あなたはこのコードを逃す可能性があります:

connection.Open(); 
command.ExecuteNonQuery(); 
connection.Close(); 
関連する問題