我有一个类,它有许多“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参数传递给它?
谢谢!
答案 0 :(得分: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