输入字符串的格式不正确

Posted

技术标签:

【中文标题】输入字符串的格式不正确【英文标题】:Input string was not in a correct format 【发布时间】:2011-09-23 05:03:17 【问题描述】:

我是 Visual Studio 2010 和 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;
        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();
            
        

    

【问题讨论】:

【参考方案1】:

错误在这里:

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

addbday.Text 不在日期时间字段中。

即使您确实将其声明为日期时间:

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

将有问题的行改写为:

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

【讨论】:

我已经将您的建议改写为“command.Parameters["@birthday"].Value = Convert.ToDateTime(addbday.Text);”但是仍然有错误。 @schadi:您仍然遇到完全相同的错误吗?这个答案似乎是正确的。 @schadi,请不要说“我仍然遇到错误”,而是在评论中粘贴确切的错误消息。千里眼是 SO 上的稀有技能 :-)【参考方案2】:

例如,您将“生日”声明为日期时间 command.Parameters.Add(new MySqlParameter("@birthday", SqlDbType.DateTime));

但是,您的值被插入为 command.Parameters["@birthday"].Value = addbday.Text; // 我不确定你的格式是否正确。

这就是您出现格式错误的原因。

【讨论】:

【参考方案3】:

我会看一下这一行,因为参数被声明为日期时间。确保它是预期的格式。

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

【讨论】:

@schadi,请再次产生异常,然后使用复制完整异常到剪贴板按钮并发布完整异常和堆栈跟踪。

以上是关于输入字符串的格式不正确的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 查询中的输入字符串格式不正确

输入字符串的格式不正确

输入字符串的格式不正确 #2

C#,输入字符串的格式不正确,十进制值

输入字符串在 double.Parse 中的格式不正确

数组中的“System.FormatException:'输入字符串格式不正确”错误