使用c#将日期时间插入到sql server 2008中

本文关键字:sql server 2008 插入 日期 时间 使用 | 更新日期: 2023-09-27 18:25:25

我收到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();

我该如何让它工作?

使用c#将日期时间插入到sql server 2008中

我想问题就在这里:

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

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

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

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

您可以理想地设置adapt。将命令插入到变量中,然后使用它(包括perf.和less类型)

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

adapt.InsertCommand.Parameters.Add("@birthDate", SqlDbType.DateTime).Value = DateTime.Parse(textBox8.Text, "yyyy/MM/dd");