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);
     }

在这里,我收到此错误:

方法的重载没有两个参数。

我究竟做错了什么?

4

3 回答 3

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);
     } 
于 2013-09-27T04:41:40.687 回答
0

您期待 3 个参数

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

但是当你调用这个方法时你只发送了两个参数

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

因此,当您通过传递两个参数来调用相同的方法时,只有Sqlhelper对象会寻找另一个具有两个参数的同名方法,这会导致此错误。

您可以通过传递第三个参数来解决问题,或者默认情况下将第三个参数设置为空。

于 2013-09-27T04:57:30.870 回答
0

感谢大家的回复。在上面的程序中,我们可以在 ExecuteDataset 方法参数中将 sqlhelper 类作为可选参数提供,也可以作为默认参数提供。这样sqlparamter传递对其他方法不是强制性的,只有在需要时才能传递。

于 2013-09-28T05:44:06.523 回答