MaskedTextBox如果为空,则在SQL中插入NULL。

3
我有以下代码,用于检查maskedtextbox是否为空。如果它是空的,就会向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);
}

1
你需要在 DateTime.TryParseExact 中提供格式,而不是 __... 请问你的掩码格式是什么? - Sriram Sakthivel
@SriramSakthivel 感谢您的评论,我的掩码是00/00/0000 - /会被替换为. - Marek
1
你的 maskedTextBox2.Text 值长什么样子?请展示一个示例。 - Sriram Sakthivel
1
MM.dd.yyyy 还是 dd.MM.yyyy? - Sriram Sakthivel
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/34849/discussion-between-marek-and-sriram-sakthivel - Marek
显示剩余3条评论
2个回答

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”,则需要更改格式以使解析工作! 这应该可以运行。

1
@Marek,你没有删除那行写着 var value2 = ... 的代码,对吧? - jszigeti
1
不,我只是给OP提供了需要替换的部分。我并没有建议删除其他行。现在清楚了吗@Marek? - Sriram Sakthivel
1
@jszigeti 操作者可能已经删除了 var value2 = .. - Sriram Sakthivel
1
如果MaskedTextBox没有填写,您的意思是什么? - Sriram Sakthivel
尝试像 jszigeti 建议的那样设置断点,看看是否进入了 If 语句。 - Sriram Sakthivel
显示剩余14条评论

1
这对我来说很好用:

这对我来说很好用:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接