第一个参数为参数名,第二个参数为参数数据类型,第三个参数为参数数据类型长度(整形4位),第四个参数为参数类型(为存储过程的返回值),后面的参见:
ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfSystemDataSqlClientSqlParameterClassctorTopic6.htm

解决方案 »

  1.   

    已经 安装 msdn 打不开  ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfSystemDataSqlClientSqlParameterClassctorTopic6.htm
    另外  :  加了一个参数,是存储过程程的返回值的参数  , 为什么 加此 参数 ??
      

  2.   

    public SqlParameter(
       string parameterName,
       SqlDbType dbType,
       int size,
       ParameterDirection direction,
       bool isNullable,
       byte precision,
       byte scale,
       string sourceColumn,
       DataRowVersion sourceVersion,
       object value
    );参数说明:
    parameterName 
    要映射的参数的名称。 
    dbType 
    SqlDbType 值之一。 
    size 
    参数的长度。 
    direction 
    ParameterDirection 值之一。 
    isNullable 
    如果该字段的值可为空,则为 true,否则为 false。 
    precision 
    要将 Value 解析为的小数点左右两侧的总位数。 
    scale 
    要将 Value 解析为的总小数位数。 
    sourceColumn 
    源列的名称。 
    sourceVersion 
    DataRowVersion 值之一。 
    value 
    一个 Object,它是 SqlParameter 的值。
      

  3.   

    经常看看msdn,对自己很有好处的!
      

  4.   

    最后 问题 , 解决 结贴  !cacheKey = "QQQ" qqq是 任意 字符串 吗  ?  为什么要 加个 前缀 qqq ?
    ==================if (Request.IsAuthenticated == true) {
    cacheKey = "QQQ" + context.Request.QueryString["name"] + context.Request.QueryString["product_id"] + context.Request.QueryString["requestedPage"];
    }
    else {
    cacheKey = "AAA" + context.Request.QueryString["name"] + context.Request.QueryString["product_id"] + context.Request.QueryString["requestedPage"];
      

  5.   

    cache 是相当于application级别的东西
    可能是为了多人开发的时候,不产生命名冲突,所以加了前缀吧其实在比较大的系统里,session的使用,一般也是会分子系统使用前缀的
      

  6.   

    任意 字符串 吗  ?  为什么要 加个 前缀 qqq ?
      

  7.   

    哈哈,这个东西我正好在用,这个是Sql Server代理类的一部分,这个类是专门负责操作Sql Server的,通过你生成的SqlParameter[]变量(是个SqlParameter数组)来建立SqlCommand对象。这个类的大概结构如下:public abstract [ClassName]
    这个类一般是抽象的,必须让其他类继承,才能用到这个类。public [ClassName]
    {
       // 建立SqlConnection
    }
    构造函数,负责建立SqlConnection对象,注意这个对象是protected的。proected [返回类型] RunProcedure(string ProcedureName,IDataParameter[] parameters,[参数])
    {
       //执行存储过程,返回不同的内容
    }
    实际上,这个RunProcedure是个重载,它返回不同类型的值。有void,int,SqlDataReader和DataSet,分别代表不同的数据库操作:
    void 表示在一个已经有数据的DataSet里面再加入一个DataTable,通常用于关系数据的操作。
    int 表示用于执行不返回数据集的操作,如添加,删除等,返回值一般代表操作是否成功或者影响的行数。
    SqlDataReader 这个不用我多说,我的最爱,显示数据时非常有用。
    DataSet 对数据进行复杂操作时候可用
    而且,这个方法必须声明为proected。下面一步就是贴主的CreateCommand()了,不过贴主的这个方法少写了一点。
    这个方法的作用就是根据用户输入的内容,自动建立SqlCommand对象,用来对数据库进行操作。不过贴主的方法仅仅考虑了一种情况,就是返回类型为int的情况。这时候,才需要
    cmd.Parameters.Add( 
                new SqlParameter("ReturnValue", SqlDbType.Int, 4, 
                ParameterDirection.ReturnValue, false, 0, 0, 
                string.Empty, DataRowVersion.Default, null)); 
    上面代码是加入了一个名称为“ReturnValue”的存储过程参数,这个是SqlServer自动加入的参数。返回的值如果你不定义,那么就是影响的行数。
    所以上面贴主的代码,仅仅是RunProcedure()的返回int类型时调用的方法。其他操作返回数据集,没有返回值。可能会出错。