从字符串.net ADO转换日期和/或时间时,System.Data.SqlClient.SqlException转换失



我正在使用ADO将WFA中dateTimePicker的数据插入数据库。数据库具有日期数据类型-YYYY/MM/DD。因此,我将日期从dateTimePicker缩短为ShortDateFormat。那么它不是YYYY/MM/DD吗?我得到了这个例外:

System.Data.SqlClient.SqlException:'从字符串转换日期和/或时间时转换失败。'

代码:

using (SqlConnection conn = new SqlConnection(connString))
{
string query = "Insert Into Users VALUES (@Name, @Lastname, @Phone, @birthDate, @Image)";
using (SqlCommand cmd = new SqlCommand(query, conn))
{
string FileName = btnImgPath.Text;
cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 100).Value = tbName.Text;
cmd.Parameters.Add("@Lastname", SqlDbType.NVarChar, 100).Value = tbLastname.Text;
cmd.Parameters.Add("@Phone", SqlDbType.NVarChar, 100).Value = tbPhone.Text;
cmd.Parameters.Add("@birthDate", SqlDbType.Date, 100).Value = dtp1.Value.Date.ToShortDateString();
cmd.Parameters.Add("@Image", SqlDbType.VarBinary).Value = imageData;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}

代码将字符串传递给日期类型的参数:

cmd.Parameters.Add("@birthDate", SqlDbType.Date, 100).Value = dtp1.Value.Date.ToShortDateString();

在将其发送到数据库之前,需要将其解析回DateTime

直接传递DateTime值:

cmd.Parameters.Add("@birthDate", SqlDbType.Date).Value = dtp1.Value.Date;

DateTime.Date属性返回不包含原始值的时间部分的DateTime。

也不需要指定大小,因为date是固定大小类型的

最新更新