将Nothing作为值传递给数据库?

时间:2011-04-06 15:52:01

标签: vb.net tsql

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

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

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

如果我将此方法称为:

InsertDescription();

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

7 个答案:

答案 0 :(得分:4)

尝试使用DbNull.Value

  

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

- 这不行吗?

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

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

答案 1 :(得分:1)

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

修改

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

Description As Nullable(Of String) = DbNull.Value

答案 2 :(得分:1)

传递DBNull,或者在存储过程中声明@Description参数,默认为null

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

数据库空值由DBNull.Value表示,如果Description = Nothing,您希望if语句将参数设置为DBNull.Value

答案 5 :(得分:0)

声明丢失。

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

答案 6 :(得分:0)

尝试使用DBNull search here for more details