Vb.net 在SQL参数中使用IF()Null合并

Vb.net 在SQL参数中使用IF()Null合并,vb.net,parameters,null-coalescing-operator,Vb.net,Parameters,Null Coalescing Operator,我试图使用If()运算符合并SQL参数中的值,但我很难找到它 Dim First as String = Nothing First = FirstName.Text Using conn As New SqlConnection() 'Code omitted .AddWithValue("@FirstName", If(First, DBNull.Value)) 基本上,如果First=Nothing,参数的格式应如下所示: .AddWithValue("@FirstName", DBNu

我试图使用If()运算符合并SQL参数中的值,但我很难找到它

Dim First as String = Nothing
First = FirstName.Text
Using conn As New SqlConnection()
'Code omitted
.AddWithValue("@FirstName", If(First, DBNull.Value))
基本上,如果First=Nothing,参数的格式应如下所示:

.AddWithValue("@FirstName", DBNull.Value)
如果FirstName.Text不是
Nothing
Null
,则它基本上如下所示:

.AddWithValue("@FirstName", First)
有人有什么建议吗

我知道First的值是
,我只是不知道如何编程。这就是为什么我尝试了
=Nothing

目前的编写方式如下:

If employeeName <> "last,first" Then
    cmd.Parameters.AddWithValue("@EMPL_NM", employeeName)
Else
    cmd.Parameters.AddWithValue("@EMPL_NM", DBNull.Value)
End If

DBNull.Value
String
是不同的类型。空合并运算符不喜欢这样

您可以将其强制转换为
对象
,使其可编译,尽管我更喜欢您的
,否则

cmd.Parameters.AddWithValue("@FirstName", If(First, DirectCast(DBNull.Value, Object)))

达姆内。我想这可能与此有关。谢谢你认为
If/Else
更有效吗?@Newbie:它不是更有效,但很清晰,还可以编写额外的代码,例如,如果你想处理
First
Nothing
(消息框、日志等)的情况。
cmd.Parameters.AddWithValue("@FirstName", If(First, DirectCast(DBNull.Value, Object)))