2013-09-27 51 views
1

我有一個方法,一個DLL:爲什麼我得到「沒有重載的方法需要兩個參數」?

public static DataSet ExecuteDataset(string strcommandText,CommandType commandType,SqlParameter[] p) 
{ 
    CreateConnection(); 
    da = new SqlDataAdapter(strcommandText, con); 
    da.SelectCommand.CommandType = commandType; 
    da.SelectCommand.Parameters.AddRange(p); 
    ds = new DataSet(); 
    da.Fill(ds); 
    return ds; 
}  

而且我已經在另一個DLL寫了一個方法:

public static DataSet GetDeptDetails() 
    { 
    string strcommandText = "sp_DeptDetails"; 
    return SqlHelper.ExecuteDataset(strcommandText,CommandType.StoredProcedure); 
    } 

在這裏,我得到這個錯誤:

no overload for method takes two arguments.

我究竟做錯了什麼?

+2

那麼我可以看到第三個參數'SqlParameter [] p',你錯過了它們。 'ExecuteDataset'接受3個參數,並且沒有超載有2個參數 – V4Vendetta

+0

SqlHelper.ExecuteDataset需要更多的兩個參數。 – Muctadir

回答

1
public static DataSet ExecuteDataset(string strcommandText,CommandType commandType,SqlParameter[] p=null) 
{ 
    CreateConnection(); 
    da = new SqlDataAdapter(strcommandText, con); 
    da.SelectCommand.CommandType = commandType; 
    if(p!=null) 
    { 
    da.SelectCommand.Parameters.AddRange(p); 
    } 
    ds = new DataSet(); 
    da.Fill(ds); 
    return ds; 
} 




public static DataSet GetDeptDetails() 
    { 
    string strcommandText = "sp_DeptDetails"; 
    return SqlHelper.ExecuteDataset(strcommandText,CommandType.StoredProcedure); 
    } 
+0

小心解釋一下? –

+1

您在ExecuteDataset方法中有3個參數,並且您傳遞了其中2個參數。所以它給你編譯錯誤。將缺省值提供給最後一個參數使其成爲可選參數 – Patel

+0

感謝您的回覆。但是,我認爲我們可以在ExecuteDataset中給SqlParameter [] p作爲可選參數,我們可以如何將它作爲可選參數? –

0

你期待在

`public static DataSet ExecuteDataset(string strcommandText,CommandType commandType,SqlParameter[] p)` 
method. 

3參數但是,當你調用這個方法

return SqlHelper.ExecuteDataset(strcommandText,CommandType.StoredProcedure); 

所以,當你通過傳遞只有兩個參數Sqlhelper調用相同的方法來發送只有兩個參數對象查找另一個具有相同名稱的方法,該方法具有導致此錯誤的兩個參數。

您可以通過傳遞第三個參數或簡單地將第三個參數設置爲null來解決問題。

0

感謝您的回覆。在上面的程序中,我們可以在ExecuteDataset Method參數的sqlhelper類中給出可選參數,或者我們可以給出默認參數。所以sqlparamter傳遞對其他方法來說不是強制性的,我們只有在需要時才能通過。

相關問題