【问题标题】:MaskedTextbox unable to insert NULL date into SQLMaskedTextbox 无法将 NULL 日期插入 SQL
【发布时间】:2013-07-14 22:14:17
【问题描述】:

我有 maskedtextbox 将日期插入 SQL data type 日期。在 SQL 中,它允许 NULL,但如果我尝试将此 maskedtextbox 插入为空。它给出了一个错误,它无法将符号转换为日期数据类型。这个蒙版文本框类似于 ..__ (DD.MM.YYYY)

我的 Parameter 用于 INSERT INTO SqlCommand 是这样的:

   prikaz.Parameters.AddWithValue("zodjdate", maskedTextBox2.Text);

我应该如何更改它以使其插入 NULL?

提前致谢。 硕士

【问题讨论】:

  • 空字符串与 null 不同

标签: c# sql sql-server


【解决方案1】:
var value = (object) DBNull.Value;
DateTime parsedDate;
if (DateTime.TryParseExact(maskedTextBox2.Text, "dd.MM.yyyy", null, 
                           DateTimeStyles.None, out parsedDate))
{
    value = parsedDate;
}
prikaz.Parameters.AddWithValue("zodjdate", value);

【讨论】:

  • 这给了我这个错误:无法确定条件表达式的类型,因为在 System.DBNUll 和字符串之间没有隐式转换。感谢您的帮助,但我该怎么办?
  • 对,您应该将DBNull.Value 转换为object:两边都可以转换成object
  • 再次感谢,我试过了,但它仍然给了我同样的错误信息:它无法将符号转换为日期数据类型。你不知道错误可能在哪里吗?
  • 客户端解析字符串可以避免SQL转换错误。我再次更新了答案:)
  • 在您的 .cs 文件顶部包含 using System.Globalization;。 Visual Studio 应该为您提供一个快捷链接来为您执行此操作。
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
相关资源
最近更新 更多