错误:从字符串转换日期和/或时间时转换失败

本文关键字:转换 时间 失败 日期 字符串 错误 | 更新日期: 2023-09-27 17:59:38

在SQL表Date_Of_BirthDate_Of_Joining中,数据类型为date。我需要执行update

我有这个代码,它显示了一个错误-Conversion failed when converting date and/or time from character string.请帮忙。

string sql = "UPDATE Employees SET Designation = '" +textBox_BEUpdtD.Text + 
    "', Employee_Subgroup = '" +comboBox_BEupdt.Text + 
    "', Date_Of_Birth = " + dateTimePicker_DOBUpdt.Text + 
    ", Date_Of_Joining = " + dateTimePicker_DojUpdt.Text + 
    " Where Employee_Name ='"+comboBox_EmpNm.Text+"' ";
SqlCommand cmd7 = new SqlCommand(, con7);
con7.Open();
int o = cmd7.ExecuteNonQuery();
MessageBox.Show(o +" : Record has been updated"); '

错误:从字符串转换日期和/或时间时转换失败

除了将用户变量直接发送到数据库的SQL注入问题外,我建议使用参数化查询来简化您的操作。

SqlCommand cmd7 = new SqlCommand("UPDATE Employees SET Designation = @designation, Employee_Subgroup = @subgroup, Date_Of_Birth = @dateofbirth, Date_Of_Joining = @dateofjoining Where Employee_Name = @employeename", con7);
cmd7.Parameters.AddWithValue("designation", textBox_BEUpdtD.Text);
cmd7.Parameters.AddWithValue("subgroup", comboBox_BEupdt.Text);
cmd7.Parameters.AddWithValue("dateofbirth", dateTimePicker_DOBUpdt.Value.Date);
cmd7.Parameters.AddWithValue("dateofjoining", dateTimePicker_DojUpdt.Value.Date);
cmd7.Parameters.AddWithValue("employeename",comboBox_EmpNm.Text);
con7.Open();
int o = cmd7.ExecuteNonQuery();
MessageBox.Show(o +" : Record has been updated")

也就是说,您的数据库模式存在一些问题。我强烈建议您不要键入员工姓名,因为:A) 它不一定是独一无二的,B) 在这种形式中可能会被打错,因为它只是一个纯文本框,C) 可能会随着时间的推移而变化(例如婚姻等)