【问题标题】:Passing Nothing as a value to a database?将 Nothing 作为值传递给数据库?
【发布时间】:2011-04-07 00:07:35
【问题描述】:

我有一个包含允许空值的 nvarchar 列的表。

我在 VB.NET 中有一个方法,它有一个设置为 Nothing 的可选描述变量

Public Shared Sub InsertDescription(Optional ByVal Description As String = Nothing)
{
    //Insert Description Procedure Call
}

如果我这样调用这个方法:

InsertDescription();

它没有说该过程期待@Description,但未提供。我发现解决此问题的唯一方法是将默认值设置为“”或不使其成为可选值并仅传入“”,但我不想在数据库表描述列中插入“”字符串,我想默认传入null。

【问题讨论】:

    标签: vb.net tsql


    【解决方案1】:

    尝试使用DbNull.Value

    如果数据库字段缺少数据, 您可以使用 DBNull.Value 属性 显式分配一个 DBNull 对象 字段的值。

    -- 这不行吗?

    if (Description is nothing) then ' Set SP param to dbnull.value
    

    如果没有,你能发布一些更相关的代码吗?

    【讨论】:

    • 我已经试过了,它说它不能将 DBNull 转换为 String。
    【解决方案2】:

    要么传递DBNull,要么在你的存储过程中声明@Description参数,默认null

    【讨论】:

      【解决方案3】:

      在声明输入参数时,您可以在存储过程中默认将@Description 设置为空值。这样@Description 将是可选的。

      ALTER PROCEDURE MyProcedure
        @Description varchar(50) = null
      AS
        ...
      

      【讨论】:

        【解决方案4】:

        您必须将@Description 参数设置为DBNull.Value

        编辑

        IIRC 我认为您需要将Description 的声明更改为

        Description As Nullable(Of String) = DbNull.Value

        【讨论】:

        • 我更新了我的帖子,我将参数更改为 Optional ByVal Description As String = Nothing。我试过 DBNull.Value,但它说它不能从 DBNull 转换为 String。
        【解决方案5】:

        数据库空值由 DBNull.Value 表示,您需要一个 if 语句将参数设置为 DBNull.Value if Description = Nothing。

        【讨论】:

          【解决方案6】:

          声明缺失。

          Public Shared Sub InsertDescription(Optional ByVal Description As String = Nothing)
           {
             //Insert Description Procedure Call
           }
          

          【讨论】:

            【解决方案7】:

            尝试使用 DBNull search here for more details

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-04-23
              • 2018-01-20
              • 2010-12-30
              • 1970-01-01
              • 1970-01-01
              • 2022-10-25
              相关资源
              最近更新 更多