2011-06-27 177 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不是沒有時間字段。

即使你沒有宣佈它是一個日期時間:

command.Parameters.Add(new MySqlParameter("@birthday", SqlDbType.DateTime)); 

重寫違規行:

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

我已經將你的建議改寫爲「command.Parameters [」@ birthday「]。Value = Convert.ToDateTime(addbday.Text);」但仍然有錯誤。 – sean

+0

@schadi:你仍然得到完全相同的錯誤?這個答案似乎正確。 – rsbarro

+1

@schadi,請不要說「我仍然有錯誤」,而是在評論中粘貼確切的錯誤信息。透視是一種難得的技巧:-) – Johan

0

一個例子,你宣佈你的 「生日」 的日期時間 command.Parameters.Add (新的MySqlParameter(「@ birthday」,SqlDbType.DateTime));

但是,您的值正在插入爲 command.Parameters [「@ birthday」]。Value = addbday.Text; //我不確定你是否使用了正確的格式。

這就是爲什麼你有格式錯誤。

0

我會看看這一行,因爲參數被聲明爲日期時間。確保它處於預期的格式。

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

我已經試過「Convert.ToDateTime」,但仍然有錯誤。 – sean

+0

@schadi,請再次產生異常,然後使用複製完整異常來剪貼板按鈕,併發布完整的異常和堆棧跟蹤。 –