2012-05-23 207 views
0

我有一個類,它有許多「New()」函數來啓動它與各種參數。我想創建一個New()函數來初始化沒有參數的類。問題是存在一個「fillData」函數,它填充類的數據,並接受存儲過程來完成工作,但有一個存儲過程參數。我不想創建一個新的fillData函數,但希望使用fillData函數,而不需要額外的存儲過程。我這樣做的方式是將一個空的SqlParameter var傳遞給fillData函數,但不管我做什麼,當我檢查params參數爲空時,它似乎總是認爲那裏有東西。如何檢查sqlParameter是否爲空?

我想檢查是否這種「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

你可以讓你的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 
+0

完美!我沒有意識到「可選」關鍵字,總是得到使用「Nothing」,0,NULL,DBNULL困惑。這工作很好,很乾淨。謝謝! – russds