0

我收到failed to convert parameter value from a string to a datetime错误,我有一个文本框,用户应该在其中插入日期,我的代码是:

SqlConnection Con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\targil3.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlDataAdapter adapt = new SqlDataAdapter();
adapt.InsertCommand = new SqlCommand("INSERT INTO tblEmployee VALUES (@employeeNumber, @employeePrivateName, @employeeFamilyName ,@city, @street, @houseNo, @phoneNumber, @birthDate, @startWorkingDate)", Con);
adapt.InsertCommand.Parameters.Add("@employeeNumber", SqlDbType.VarChar).Value = textBox1.Text;
adapt.InsertCommand.Parameters.Add("@employeePrivateName", SqlDbType.VarChar).Value = textBox2.Text;
adapt.InsertCommand.Parameters.Add("@employeeFamilyName", SqlDbType.VarChar).Value = textBox3.Text;
adapt.InsertCommand.Parameters.Add("@city", SqlDbType.VarChar).Value = textBox4.Text;
adapt.InsertCommand.Parameters.Add("@street", SqlDbType.VarChar).Value = textBox5.Text;
adapt.InsertCommand.Parameters.Add("@houseNo", SqlDbType.Int).Value = textBox6.Text;
adapt.InsertCommand.Parameters.Add("@phoneNumber", SqlDbType.VarChar).Value = textBox7.Text;
adapt.InsertCommand.Parameters.Add("@birthDate", SqlDbType.DateTime).Value = textBox8.Text;
adapt.InsertCommand.Parameters.Add("@startWorkingDate", SqlDbType.DateTime).Value = textBox9.Text;

Con.Open();
adapt.InsertCommand.ExecuteNonQuery();
Con.Close();

我如何让它工作?

4

2 回答 2

2

我想问题出在这里:

adapt.InsertCommand.Parameters.Add("@birthDate", SqlDbType.DateTime).Value = textBox8.Text;

您将 type 指定为DateTimetype 并传递给它一个字符串。尝试将您的字符串值转换为DateTime类型对象,例如:

adapt.InsertCommand.Parameters.Add("@birthDate", SqlDbType.DateTime).Value 
        = Convert.ToDateTime(textBox8.Text);

如果在解析过程中出现格式异常,您可以查看DateTime.ParseExactor 。DateTime.TryParseExact请参阅:自定义日期时间格式

于 2013-07-29T13:45:52.830 回答
0

理想情况下,您可以将 adapt.InsertCommand 设置为变量并改用它(性能和输入更少)

假设您保证文本框文本的正确格式,请使用这样的日期时间参数更改行

adapt.InsertCommand.Parameters.Add("@birthDate", SqlDbType.DateTime).Value = DateTime.Parse(textBox8.Text, "yyyy/MM/dd");
于 2013-07-29T13:49:14.193 回答