Используйте IF() Null Coalesce в параметрах SQL

Я пытаюсь использовать оператор 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)

У кого-нибудь есть указатели или есть предложения?

Я понимаю, что во-первых, имеет значение ""Я просто не уверен, как программировать вокруг этого. Вот почему я пытался = Nothing,

Это в настоящее время пишется как:

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

Который я пытаюсь свести к

.AddWithValue("@FirstName", If(First, DBNull.Value))

1 ответ

Решение

DBNull.Value а также String разные типы. Нуль-объединяющему оператору это не нравится.

Вы могли бы бросить его Object чтобы компилировать, хотя я бы предпочел ваш If-Else:

cmd.Parameters.AddWithValue("@FirstName", If(First, DirectCast(DBNull.Value, Object)))
Другие вопросы по тегам