.net - 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();
}
}
解决方案
代码将字符串传递给日期类型的参数:
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
固定大小类型也是如此
推荐阅读
- javascript - Javascript ES2020 中是否有等效的 optionalChaining?
- ansible - 使用 with_items 循环安装时为包设置友好名称
- azure - 无法从免费服务菜单创建 Azure 应用服务
- go - 我可以使用 MinIO 对具有数百万个对象的 S3 存储桶上的所有对象进行列表吗?
- r - 用 R 中前一个值的乘数填充 NA
- php - 连接来自多个数据库的表使用
- javascript - 同时显示每小时英里数和每小时公里数?
- storage - 无法加载加载我的数据集以在 Google Colab 上训练我的模型
- google-cloud-firestore - 当应用程序进入后台时,禁用 Firestore 的网络连接与删除单个快照侦听器?
- c# - firebase auth 得到“来自 Facebook 的不成功的 debug_token 响应”