2011-06-27 189 views
3

Visual Studio 2010とMySQLが初めてです。私は従業員を追加することができるフォームを作成しています。しかし、[追加]ボタンをクリックすると、「入力文字列が正しい形式ではありません」というエラーが表示されます。入力文字列の形式が正しくありません

enter image description here

enter image description here

コード:

これは、スクリーンショットである

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; 
     using (MySqlConnection conn = new MySqlConnection(MyConString)) 
     { 
      connection.Open(); 
      using (MySqlCommand com = connection.CreateCommand()) 
      { 
       command.CommandText = "insert into users(fname, mname, lname, position, contactnumber, emailadd, birthday, username, password) 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.DateTime)); 
       command.Parameters.Add(new MySqlParameter("@username", SqlDbType.VarChar)); 
       command.Parameters.Add(new MySqlParameter("@password", SqlDbType.VarChar)); 
       command.Parameters["@fname"].Value = addfname.Text; 
       command.Parameters["@mname"].Value = addmname.Text; 
       command.Parameters["@lname"].Value = addlname.Text; 
       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; 
       command.ExecuteNonQuery(); 
      } 
     } 

    } 

答えて

3

エラーはここにある:

command.Parameters["@birthday"].Value = addbday.Text; 

addbday.Textはない日時フィールドではありません。あなたはそれがdatetime型であることを宣言したのにもかかわらず

:私は "Convert.ToDateTime" を試してみましたが、それでもエラーが発生してきた

command.Parameters["@birthday"].Value = Convert.ToDateTime(addbday.Text); 
+0

私はすでにあなたの提案を "command.Parameters [" @ birthday "]に書き直すために適用しました。Value = Convert.ToDateTime(addbday.Text);"しかし、まだエラーがあります。 – sean

+0

@schadi:まったく同じエラーが表示されますか?この答えは正しいようです。 – rsbarro

+1

@schadi、「私はまだエラーが発生する」とは言わないでください。代わりにコメントに正確なエラーメッセージを貼り付けてください。 Clairvoyanceはまれなスキルです:-) – Johan

0

たとえば、あなたは、日時 command.Parameters.Addとして、あなたの "誕生日" を宣言しました(新しいMySqlParameter( "@ birthday"、SqlDbType.DateTime));

ただし、値は command.Parameters ["@ birthday"]として挿入されています。値= addbday.Text; //あなたが正しい形式であるかどうかわからない場合。

そのため、フォーマットエラーが発生しています。

0

パラメータがdatetimeとして宣言されているので、この行を見てください。期待どおりの形式であることを確認してください。

command.Parameters["@birthday"].Value = addbday.Text; 
+0

command.Parameters.Add(new MySqlParameter("@birthday", SqlDbType.DateTime)); 
はに問題のある行を書き換え

。 – sean

+0

@schadi、もう一度例外を生成してから、クリップボードの完全コピー例外ボタンを使用し、完全な例外とスタックトレースを投稿してください。 –