如有以下代码using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;/// <summary>
///Parameter 的摘要说明
/// </summary>
public class Parameter
{
    public SqlParameter sqlParameter;
    public Parameter(String parameterName, SqlDbType dbType, Int32 size, Object value)
    {
        sqlParameter = new SqlParameter(parameterName, dbType, size);
        sqlParameter.Value = value;
    }
}
oo.DbOperator.AddParameter(new Parameter("@CardNo", SqlDbType.VarChar, 20, CardNo).sqlParameter);上面的Parameter是我写的添加sqlParameter的方法
然后下面代码是添加参数的
那如果这里的
oo.DbOperator.AddParameter(new Parameter("@CardNo", SqlDbType.VarChar, 20, CardNo).sqlParameter);
我要写法为
oo.DbOperator.AddParameter(new Parameter("@CardNo", SqlDbType.VarChar, 20, CardNo));
这样子的话 上面的 Parameter类要怎么改谢谢

解决方案 »

  1.   

    oo.DbOperator.AddParameter(new SqlParameter("@CardNo", SqlDbType.VarChar, 20, CardNo)); 就可以了,不需要再加个类
      

  2.   

    难道 Sqlarameter 中的参数 sourceColumn的参数就是他的Value值是不是
    如果是的话那就OK了那就算这个OK了 那如果我非要像上面这样写的话 我上面那个类要怎么改呢谢谢
      

  3.   

    oo.DbOperator.AddParameter(new Parameter("@CardNo", SqlDbType.VarChar, 20, CardNo)); AddParameter需要的是SqlParameter类型的对象,而不是Parameter的对象 
      

  4.   

    不是,看错了,是copy的你的代码,一般写两个参数就可以了,值value,
    如果要加个类,用你的那个类继承SqlParamter就可
      

  5.   

    Parameter 你不能用这个类的构造函数来返回SqlParameter 要不Parameter 你继承SqlParameter 这个类,否则不可能
      

  6.   

    难道 Sqlarameter 中的参数 sourceColumn的参数就是他的Value值是不是 
    如果是的话那就OK了 那就算这个OK了 那如果我非要像上面这样写的话 我上面那个类要怎么改呢 谢谢
    ==========
    是的.比如你可以用一个datatable来做update,那么sourceColumn就是datatable中更新之前的那个值(列名)
      

  7.   

    SqlParameter 是密封类,不让继承,要再想办法.
      

  8.   

    sqlparameter中有这样的一个构造方法public SqlParameter (
    string parameterName,
    SqlDbType dbType,
    int size,
    ParameterDirection direction,
    bool isNullable,
    byte precision,
    byte scale,
    string sourceColumn,
    DataRowVersion sourceVersion,
    Object value
    )
    注意以下两个参数.
    sourceColumn
    源列的名称。 sourceVersion
    DataRowVersion 值之一。 
      

  9.   


    那就四个就可以了
    public SqlParameter (
    string parameterName,
    SqlDbType dbType,
    int size,
    string sourceColumn
    )一般2个就行.
      

  10.   

    RE:不行啊大家/// <summary>
    ///Parameter 的摘要说明
    /// </summary>
    public class Parameter : SqlParameter       //这里提示出错:“Parameter”: 无法从密封类型“System.Data.SqlClient.SqlParameter”派生
    {    
        public Parameter(String parameterName, SqlDbType dbType, Int32 size, Object value)
           :base(parameterName,dbType,size,sourceColumn)  //这里我取不到sourceColumn这个值 
        {
            
        }
    }问题已经在程序中贴出谢谢
      

  11.   

    继承是行不通了,如果想少写点代码的话,可以这样,用个静态方法.public class PBuilder
    {    
        public  statcit SqlParameter GetParameter(String parameterName, SqlDbType dbType, Int32 size, Object value)
        {
             SqlParameter p = new ...
            return p....    }
    }调用PBuilder.GetParameter(,.......)
      

  12.   

    RE:lz显示不想写那么多参数.
    -------------------
    不是的因为如果写他那个的话就得要用
    首先要多声明一个
    using System.Data.SqlClient;
    不想看到这个
     sqlParameter = new SqlParameter(parameterName, dbType, size);
     sqlParameter.Value = value;
    他这里还要分两分看起来不爽所以想写一个一次过的话OK的谢谢
      

  13.   

    System.Data.SqlClient.SqlParameter 是seal类型的,继承不了
      

  14.   

    RE:oo.DbOperator.AddParameter(Parameter.sqlParameter("@CardNo", SqlDbType.VarChar, 20, CardNo));
    和我的
    oo.DbOperator.AddParameter(new Parameter("@CardNo", SqlDbType.VarChar, 20, CardNo).sqlParameter);
    差不多啊 谢谢
      

  15.   

    RE:一般两个参数就行
    ----------------------
    我看了确实有两个参数的
    sqlParameter = new SqlParameter(parameterName,value);
    那如果这样的话SqlDbType, int Size 这两个不用吗
    但我看别人的程序都是用4个的没有看到用两个的
    用两个和用四个有什么样的区别谢谢
      

  16.   

    但我看别人的程序都是用4个的没有看到用两个的 
    用两个和用四个有什么样的区别 
    可以不用的,,不加的话就是以数据库里的参数为准比如说你数据库参数定义的是 varchar 20 你又在sqlParameter 里定义了Size=10 那么现在只能传长度为10的字符
      

  17.   


    区别就是多了两参数.type和size,
    这样能更明确些.