【问题标题】:How to insert null value in Database through parameterized query如何通过参数化查询在数据库中插入空值
【发布时间】:2013-05-19 00:07:01
【问题描述】:

我有一个datetime 数据类型:dttm

数据库字段类型也是datatime

现在我正在这样做:

if (dttm.HasValue)
{
    cmd.Parameters.AddWithValue("@dtb", dttm);
}
else
{
    // It should insert null value into database
    // through cmd.Parameters.AddWithValue("@dtb", _____)
}

如何做到这一点。

【问题讨论】:

标签: c# sql datetime insert parameterized-query


【解决方案1】:

这可以使用空合并运算符来完成:如果 dttm 的值为 null,则插入 DBNull.Value,否则将使用 dttm 的值

cmd.Parameters.AddWithValue("@dtb", dttm ?? (object) DBNull.Value);

这将消除对 if 语句的需要

【讨论】:

  • 是的,这是最干净的方法。我不完全确定在空合并运算符的第二个操作数中进行强制转换的可行性,但它工作正常。
【解决方案2】:

使用DBNull.Value

if (dttm.HasValue)
{
    cmd.Parameters.AddWithValue("@dtb", dttm);
}
else
{
    cmd.Parameters.AddWithValue("@dtb", DBNull.Value)
}

【讨论】:

    【解决方案3】:

    如果您的字段允许空值;

    if (dttm.HasValue)
    {
        cmd.Parameters.AddWithValue("@dtb", dttm);
    }
    else
    {
        cmd.Parameters.AddWithValue("@dtb", DBNull.Value)
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 2012-03-13
      • 1970-01-01
      相关资源
      最近更新 更多