第一次使用企业库.用的数据库访问那块.
我想做一个更新数据的方法.
        public int UpData(C_特征码 C)
        {
            Database db = DatabaseFactory.CreateDatabase();
            string sqlCommand = "UPDATE 特征码 SET 高度 = @高度 ,宽度 = @宽度 ,特征码 = @特征码 ,字符 = @字符 Where ID = @ID";
            DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);            dbCommand.Parameters.Add(new DbParameter("@高度", DbType.Int16, 0, "高度"));
            dbCommand.Parameters["高度"].Value = C.高度;
            dbCommand.Parameters.Add(new DbParameter("@宽度", DbType.Int16, 0, "宽度"));
            dbCommand.Parameters["宽度"].Value = C.宽度;
            dbCommand.Parameters.Add(new DbParameter("@特征码", DbType.String, 0, "特征码"));
            dbCommand.Parameters["特征码"].Value = C.特征码;
            dbCommand.Parameters.Add(new DbParameter("@字符", DbType.String, 2, "字符"));
            dbCommand.Parameters["字符"].Value = C.字符;
            dbCommand.Parameters.Add(new DbParameter("@ID", DbType.Int16, 0, "ID"));
            dbCommand.Parameters["ID"].Value = C.ID;
            return db.ExecuteNonQuery(dbCommand);
        }
用以上代码.编译提示错误 无法创建抽象类或接口“System.Data.Common.DbParameter”的实例请问我应该如何解决?

解决方案 »

  1.   

    dbCommand.Parameters["宽度"].Value = C.宽度;
    是这是这样写啊。
    dbCommand.Parameters["@宽度"].Value = C.宽度;
      

  2.   

    在我的印象中,"@"在ADO.NET中可以不需要
      

  3.   

    dbCommand.Parameters.Add(new DbParameter("@字符", DbType.String, 2, "字符"));无法创建抽象类或接口“System.Data.Common.DbParameter”的实例-----------------------
    你为什么要用new 呢?
      

  4.   

    DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);            dbCommand.Parameters["@高度"].Value = C.高度;
                dbCommand.Parameters["@宽度"].Value = C.宽度;
                dbCommand.Parameters["@特征码"].Value = C.特征码;
                dbCommand.Parameters["@字符"].Value = C.字符;
                dbCommand.Parameters["@ID"].Value = C.ID;
                return db.ExecuteNonQuery(dbCommand);
      

  5.   

    回复lxhvc(lanhai) : 你的方法虽然可以编译通过.但是运行的时候会提示找不到具体参数.,我想是应为没有add参数这个步骤的原因把?具体提示An OleDbParameter with ParameterName '@高度' is not contained by this OleDbParameterCollection.GXY2005(不好!我看見豬在天上飛) :不new就不是一个对象了啊.变成一个类型了.我现在改成这样也不行,错误出在new DbParameter("@高度", DbType.Int16, 0, "高度")这里.
    dbCommand.Parameters.Add(new DbParameter("@高度", DbType.Int16, 0, "高度"));
    dbCommand.Parameters["@高度"].Value = C.高度;
    其实我的目的就是能通过参数方式传递要更新的内容.而不想自己去拼接sql命令.也不想用存储过程.