2011-05-20 69 views
0

可以通過查詢字符串發送可變數量的參數。在我的表單中,查詢發送了一些可能並不總是被填充的參數,即它們將作爲id=""發送。這意味着在TableAdapter中使用的函數會帶來錯誤的結果,如果一個參數不進來,即它收到7個參數,而期望8個(或第8個將爲NULL)。不想讓多個重載函數。查詢參數問題

我能想到的唯一解決方法是使重載函數。但這意味着我將不得不使64個重載函數(8個參數)。工作太多,這讓我覺得可能還有其他一些方法可以完成這項工作,而無需完成64個功能。

有沒有?

與MSSQL

上ASP.NET工作
+1

爲什麼不只是讓一個方法接受8個參數並傳入null或空,如果其中一個值不在查詢字符串中? – ashelvey 2011-05-20 17:01:02

回答

0

有一個我們正在使用的工作,它完全適合我們。

您不需要做任何重載功能。你可以傳遞所有參數的值,如果有一個空值,你可以簡單地通過'%',你也不需要對查詢做任何事情。這裏是一個SQL查詢的例子:

Select * from Student where ID = 5 AND RollNo = '%' AND CourseID = '%' 

如果你在SQL服務器上檢查上面的查詢它會給你正確的結果。

說明:我還沒有用TableAdapter測試過這個,但我相信它會起作用。

+0

這是非常好的解決方案。它會在下次嘗試像htis時那樣工作。對於我來說,我使用了很多makshift處理。謝謝 – prometheuspk 2011-05-21 06:06:06

+0

祝你好運男人:) – 2011-05-21 06:07:15

+0

對不起,錯別字 – prometheuspk 2011-05-21 06:13:42

0

64個重載函數顯然不是一個可行的解決方案。這可能是查看WorkTable適配器代碼的時候了,因爲它聽起來好像沒有非常優雅地處理異常值。

我會與ashelvey的建議與8參數的一種方法,並確保處理代碼足夠健壯,以處理空值或空字符串。

0

介紹an object that is specifically for the parameters

public void DoWork(params OperationArgs args[]) { /* code */ } 

class OperationArgs { 
    public int? Id { get; set; } 
    public string Keywords { get; set; } 
    // etc 
} 
+0

調整爲你讓DoWork取數組 – 2011-05-20 18:25:03