0

我有一个类,它有许多“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 参数?

谢谢!

4

1 回答 1

0

您可以使您的 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
于 2012-05-23T16:55:25.310 回答