【问题标题】:MaskedTextBox If empty insert NULL into SQLMaskedTextBox 如果为空,则将 NULL 插入 SQL
【发布时间】:2013-08-06 06:52:54
【问题描述】:

我在下面得到了这段代码,它关心是否maskedtextbox is empty。如果它是空的,它INSERT INTO SQL 表__.__.____ - 只有掩码所以我相信它INSERTS NULL 但是当我填写maskedtextbox 时出现问题。它仍然是 INSERT __.__.____ - NULL 我不知道我在哪里出错,因为它通常应该插入位于 maskedtextbox 中的 date。

这个文本框的掩码是__.__.____,比如00/00/0000

我插入此数据的数据类型是 - 日期。

代码如下:

var value2 = (object)DBNull.Value;
DateTime parsedDate2;
if (DateTime.TryParseExact(maskedTextBox2.Text, "__.__.____", null,
                           DateTimeStyles.None, out parsedDate2))
{
    value2 = parsedDate2;
}
prikaz.Parameters.AddWithValue("@odjdate", value2);

编辑:下面的代码说:名称'value2'在当前上下文中不存在'

var value2 = (object)DBNull.Value;
DateTime parsedDate2;
if (DateTime.TryParseExact(maskedTextBox2.Text, "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate2))
{
    value2 = parsedDate2;
}
prikaz.Parameters.AddWithValue("@odjdate", value2);

下面的代码执行此操作:

Converting into data type date wasn't succesfull.

这是代码

if (maskedTextBox2.Text == "__.__.____")
{
    prikaz.Parameters.AddWithValue("@odjdate", null);
}
else
{
    prikaz.Parameters.AddWithValue("@odjdate",maskedTextBox2.Text);
}

【问题讨论】:

  • 您必须提供DateTime.TryParseExact 中的格式,而不是__... 您的掩码格式是什么?
  • @SriramSakthivel 感谢您的评论,我的掩码是 00/00/0000 - / 替换为 .
  • 您的maskedTextBox2.Text 值如何?显示样本
  • 12.12.2012 这是示例
  • MM.dd.yyyy 还是 dd.MM.yyyy ?

标签: c# sql sql-server winforms maskedtextbox


【解决方案1】:

试试这个

var value2 = (object)DBNull.Value;
DateTime parsedDate2;
if (DateTime.TryParseExact(maskedTextBox2.Text, "dd.MM.yyyy", CultureInfo.InvariantCulture,DateTimeStyles.None, out parsedDate2))
{
    value2 = parsedDate2;
}

注意:如果您的格式是“MM.dd.yyyy”,请替换格式以使解析工作!

这应该可以工作

【讨论】:

  • 我编辑了我的答案,它给了我这个错误 - 当前上下文中不存在名称“value2”,我编辑了答案,所以你可以看到我输入的内容。
  • @Marek 你没有删除写着var value2 = ... 的行,是吗?
  • 不,我只是给了 OP 要替换的部分。我没有建议删除任何其他行。现在清楚了吗@Marek
  • @jszigeti Op 会删除 var value2 = ..
  • 你的意思是如果maskedtextbox没有填充?
【解决方案2】:

这对我来说很好用:

 var value2 = (Object)DBNull.Value;
 DateTime parsedDate2;
 if (DateTime.TryParse(maskedTextBox1 .Text, out parsedDate2))
 {
   value2 = (Object)parsedDate2;
 }
prikaz.Parameters.AddWithValue("@odjdate", value2);     

【讨论】:

    猜你喜欢
    • 2019-01-21
    • 2011-10-28
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多