首页 > 解决方案 > System.Data.SqlClient.SqlException 从字符串.net ADO 转换日期和/或时间时转换失败

问题描述

我正在使用 ADO 将 WFA 中dateTimePicker中的数据插入到数据库中。数据库有Date dataType - 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();
                            }
                         }

标签: .netdatabaseado.net

解决方案


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

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

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

DateTime而是直接传递值:

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

DateTime.Date属性返回没有原始值的时间部分的 DateTime 。

也不需要指定大小,date固定大小类型也是如此


推荐阅读