1.默认参数if(Param == null)
Param=默认值;2.代理,类似C的函式指针

解决方案 »

  1.   

    1.默认参数if(Param == null)
    Param=默认值;2.代理,类似C的函式指针
    这个事例,你参考MSDN
      

  2.   

    我前几天也遇到这个问题,我也这样想过,实际上这是不现实的。可以这样解决
    1.
             DataGrid1.DataSource=GetDataSet(sCon,"Execute djnrb_sel 'datediff(day,tsrq,getdate())<21','410101000'","djnrb_sel");
    DataGrid1.DataBind();
    2.
    public DataSet GetDataSet(string sConns,string strCmd,string sSPName) 
    {
    DataSet myDataSet=new DataSet("myDS");
    SqlConnection myConn=new SqlConnection(sConns);
    SqlDataAdapter myAdp=new SqlDataAdapter(strCmd,myConn);
    SqlCommand myCmd=new SqlCommand(strCmd,myConn);
    myCmd.CommandText=sSPName;
    myCmd.CommandType=CommandType.StoredProcedure;
    myConn.Open();
    if(myConn.State==ConnectionState.Open)
    {
    myAdp.Fill(myDataSet);
    }
    myConn.Close();
    return myDataSet;
    }
    参数说明:strCmd:执行存储过程的命令,包括参数,但必须用单引号
    strCmd="Execute djnrb_sel 'datediff(day,tsrq,getdate())<21','410101000'"
    sSPName:存储过程名字
      

  3.   

    yarshray(saga jion(未出山的杨过)) :
     can you tell me your first solution detail? thx! jixiaoqiang(探索者):
     i think the function you give me may be have one paramter is ok, the strCmd is nessary, because your strCmd is include the name of procedure, right? Plz give more information about these two question, thx! 
      

  4.   

    1、(1)使用数组作为参数
       如果你的参数类型一致,那么你就可以使用数组作为参数,
    因为C#中数组大小可以在运行中确定。
        (2)使用重载方法
       如果你的参数类型多种多样,那么你可以列举出所有可能组合,
    采用重载方法。
        (3)结合以上两种方法
    2、使用委托
        类似于C++中的函数指针
        (1)定义要传递的函数
         例如:public int Function(int a,double [] b,ref string c);
         (2) 声明委托
         例如:public delegate int WeiTuo(int a,double [] b,ref string c);
         (3) 使用委托
         例如:a)实例化委托
                 WeiTuo weiTuo = new WeiTuo(Function);
               b)使用委托调用函数Funciont
                 int a = 1000;
                 double [] b = new double [2];
                 b[0] = 0;b[1] = 1;
                 string c = "asdf";
                 
                 weTuo(a,b,ref c);
      

  5.   

    解释一下:
    strCmd="Execute djnrb_sel 'datediff(day,tsrq,getdate())<21','410101000'"
    这里面可以有多个参数,参数用'引住,参数之间用逗号分隔。
    例如:存储过程aaaa(@v1 char(10),@v2 int)
    在c#里执行这个存储过程,strCmd="Execute aaaa 'tsz','21'"就ok了。
      

  6.   

    public void Execute(strin spName,  params IDataParameter[] prams)记得 params 一定要放最后面。