Как проверить, пуст ли sqlParameter?

У меня есть класс, в котором есть много функций "New()", чтобы инициировать его с различными параметрами. Я хотел бы создать функцию New(), которая будет запускать класс без аргументов. Проблема в том, что существует функция fillData, которая заполняет данные для класса и использует хранимую процедуру для выполнения работы, но имеет параметр хранимой процедуры. Я не хочу создавать новую функцию fillData, но хотел бы использовать функцию fillData без дополнительной хранимой процедуры. Мой способ сделать это состоял в том, чтобы передать пустую переменную SqlParameter var функции fillData, но независимо от того, что я делаю, когда я проверяю параметр params на то, что он пуст, мне всегда кажется, что там что-то есть.

Я хотел бы проверить, пуст ли этот параметр «params»:

Public Sub New()
    'just created this so i could pass something
    'and continue using fillData as is.
    Dim p(1) As SqlParameter 

    Dim db As sqldb.command
    db = New sqldb.command(ConfigurationManager.ConnectionStrings("sqlConnectionString").ConnectionString)
    fillData("r2m_getAllListingsSorted", p)
End Sub

...

Private Sub fillData(ByVal sp As String, ByVal params As SqlParameter())
    Dim db As sqldb.command
    Dim r As SqlDataReader
    db = New sqldb.command(ConfigurationManager.ConnectionStrings("sqlConnectionString").ConnectionString)

    'right here, im having the trouble, seems no matter how I try to "params", 
    'the code always defaults to db.executeReader(sp, p)
    'I've tried params.Length = 0 and params.ToString = "" also.
    If params.Value Then
        r = db.executeReader(sp)
    Else
        r = db.executeReader(sp, params)
    End If

Как мне изменить это, чтобы я мог продолжать использовать функцию fillData, не передавая ей параметр SqlParameter?

Благодарю вас!


person russds    schedule 23.05.2012    source источник


Ответы (1)


Вы можете сделать свой SqlParameter необязательным и присвоить ему значение по умолчанию Nothing:

Private Sub fillData(ByVal sp As String, 
                            ByVal Optional params As SqlParameter() = Nothing)

Затем вызовите метод без аргумента params:

fillData("StoredProcName")

Затем вы можете проверить параметр внутри метода fillData, чтобы увидеть, является ли он Nothing, прежде чем использовать его.

If params is Nothing Then
  // Do something if there's no params
Else
 // Do something if there is params
End If
person Jamie Dixon    schedule 23.05.2012
comment
Идеальный! Я не знал о ключевом слове Optional и всегда путался с использованием Nothing, 0, NULL, DBNULL. Это отлично сработало и чисто. Благодарю вас! - person russds; 23.05.2012