【问题标题】:how to add null date into access database using c#如何使用c#将空日期添加到访问数据库中
【发布时间】:2016-04-14 01:49:04
【问题描述】:

我想在访问数据库中插入空日期,如果用户选择支付选项作为现金,则 cheque_date 值应自动输入为空,如果用户不提供账单,则 bill_date 应在数据库中输入为空,我正在尝试执行此操作,但数据类型bill|_date 和 cheque_date im 使用蒙面文本框和 chequeno 的标准表达式不匹配异常即将到来。和账单号。我正在使用文本框(checkno 和 billno。它可以存储为空,唯一的问题是将空日期存储到 accessc 数据库中)

if (txtchequeno.Text == "")
                {
                    cmd.Parameters.AddWithValue("@Cheque_No", cheque);
                }
                else
                {

                    cmd.Parameters.AddWithValue("@Cheque_No", txtchequeno.Text);
                }





            DateTime chequeDate;
            var value = (object)DBNull.Value;
            if (DateTime.TryParseExact(txtmaskchequedate.Text, "dd/mm/yyyy", null, System.Globalization.DateTimeStyles.None, out chequeDate))
            {
                value = chequeDate;
            }
            cmd.Parameters.AddWithValue("@Cheque_Date", value);  

 if (txtbillno.Text == "")
                {
                    cmd.Parameters.AddWithValue("@Bill_No", billno);

                }
                else
                {
                    cmd.Parameters.AddWithValue("@Bill_No", txtbillno.Text);


                }


              DateTime billdate;
            var value1 = (object)DBNull.Value;
            if (DateTime.TryParseExact(txtmaskbilldate.Text, "dd/mm/yyyy", null, System.Globalization.DateTimeStyles.None, out billdate))
            {
                value1 = billdate;
            }
            cmd.Parameters.AddWithValue("@Bill_Date", value1); 

我在这里更改了我的代码,但仍然显示相同的错误数据类型不匹配表达式仍未解决如何解决

【问题讨论】:

  • 您在寻找DBNull.Value吗?顺便提一句。你的代码看起来很奇怪。例如,如果“Cheque_Date”确实是Date 列,则可能不允许您向其提供txtmaskchequedate.Text 的内容,这是string,而不是DateTime
  • yes dbnull.value only 但如果用户不输入任何内容,则 value 应该为 null
  • 我更改我的代码 if (DateTime.Parse(txtmaskchequedate.Text)==null) { cmd.Parameters.AddWithValue("@Cheque_Date", DBNull.Value); } else { cmd.Parameters.AddWithValue("@Cheque_Date", txtmaskchequedate.Text); } 但它给我的 String 未被识别为有效的 DateTime 异常
  • 该异常被抛出,因为txtmaskchequedate.Text的内容无法解析为DateTime。顺便提一句。 DateTime.Parse 永远不会返回 null。请参阅DateTime.TryParse,了解如何尝试解析可能代表DateTimestring

标签: c# ms-access-2007


【解决方案1】:

我设置格式:访问数据库中 cheque_date 字段的短日期,并在此处执行以下代码,该代码无论是否具有值都成功执行(谢谢@phils 和@corak)

DateTime chequeDate;
                    var value = (object)DBNull.Value;
                    if (DateTime.TryParseExact(txtmaskchequedate.Text, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out chequeDate))
                    {
                        value = chequeDate;
                    }


                    cmd.Parameters.AddWithValue("@Cheque_Date", value);

【讨论】:

    猜你喜欢
    • 2015-05-09
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多