我有一个包含允许空值的nvarchar列的表。
我在VB.NET中有一个方法,它有一个可选的描述变量,设置为Nothing
Public Shared Sub InsertDescription(Optional ByVal Description As String = Nothing)
{
//Insert Description Procedure Call
}
如果我将此方法称为:
InsertDescription();
它没有说该程序期待@Description,但没有提供。我找到解决这个问题的唯一方法是将默认值设置为“”或不使其成为可选项并只传入“”,但我不想在数据库表描述列中插入“”字符串,我想默认传入null。
答案 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