当前位置:编程学习 > C#/ASP.NET >>

半自动ORM框架遇到一个问题,高手请进!100分!~

本人再修改别人的一个半自动ORM框架的时候遇到一个问题:
当框架调用存储过程(含有out参数)的时候,返不回改存储过程out参数的值。请高手帮忙看一下。
非常感谢。

我自定义的parameter类:
public class DBParameter
    {
        private string _parameterName;
        private object _Value;
        private DbType _dbType;
        private ParameterDirection _direction;

        public string ParameterName
        {
            get
            {
                return _parameterName;
            }
            set
            {
                _parameterName = value;
            }
        }

        public DbType DbType
        {
            get
            {
                return _dbType;
            }
            set
            {
                _dbType = value;
            }
        }

        public object Value
        {
            get
            {
                return _Value;
            }
            set
            {
                _Value = value;
            }
        }

        
        public ParameterDirection Direction
        {
            get
            {
                return _direction;
            }
            set
            {
                _direction = value;
            }
        }

        public DBParameter(string parameterName,object parameterValue,DbType dbType)
        {
            InitData(parameterName, parameterValue,dbType, ParameterDirection.Input);
        }

        public DBParameter(string parameterName, object parameterValue, DbType dbType, ParameterDirection direction)
        {
            InitData(parameterName, parameterValue,dbType, direction);
        }

        private void InitData(string parameterName,object parameterValue,DbType dbType, ParameterDirection direction)
        {
            _parameterName = parameterName;
            _Value = parameterValue ?? DBNull.Value;
            _direction = direction;
            _dbType = dbType;
        }
        
    }

我自定义的DBParameterCollection 类
public class DBParameterCollection : List<DBParameter>
    {
        public void AddWithValue(string parameterName, object parameterValue,DbType dbType)
        {
            AddWithValue(parameterName, parameterValue,dbType, ParameterDirection.Input);
        }

        public void AddWithValue(string parameterName, object parameterValue, DbType dbType ,ParameterDirection direction)
        {
            DBParameter parameter = new DBParameter(parameterName, parameterValue,dbType, direction);
            base.Add(parameter);
        }
    }

执行的时候是这样的:

            foreach (DBParameter parameter in parameters)
            {
                //SqlParameter sp = new SqlParameter();
                //sp.ParameterName = parameter.ParameterName;
                //sp.DbType = parameter.DbType;
                //sp.Value = parameter.Value;
                //sp.Direction = parameter.Direction;
                ((SqlCommand)command).Parameters.AddWithValue(parameter.ParameterName, parameter.Value);
                ((SqlCommand)command).Parameters[parameter.ParameterName].Direction = parameter.Direction;
            }


请高手帮忙解决。急!分嫌不够可以另外开贴加分! --------------------编程问答-------------------- 如果您对上面的代码还不是太明白,可以参考google的svn里的代码:我的跟这个有点像:

http://www.google.cn/codesearch?hl=zh-CN&q=show:qF96HuuLo8Y:M3YclQFpqq0:qF96HuuLo8Y&sa=N&ct=rd&cs_p=http://sessionexplorer.googlecode.com/svn&cs_f=SessionExplorer.DataAccess/Parameter.cs&start=1

再线等!~~~~~~~~~~~~~~~~~~~~~ --------------------编程问答-------------------- 帮你顶 --------------------编程问答-------------------- 你执行存储过程没?
cmd.ExecuteNonQuery(); --------------------编程问答-------------------- 你先试试存储过程能out值吗?? --------------------编程问答-------------------- 存储过程都没问题,我是过了。用的普通的操作数据库的类试过了
都没问题的 --------------------编程问答-------------------- ExecuteXXX 代码呢?

如果是 ExecuteReader,你必须 Close 该 Reader 之后才能读取到 output 参数的值 --------------------编程问答-------------------- 没见到什么 ExecuteXXX 代码
没执行 肯定获取不了 --------------------编程问答-------------------- 最好跟踪下 单步执行 实时跟踪变量 看下你声明的参数有没有设置为output 存储过程是否正确执行 如果没问题 

继续跟踪执行的存储过程 用SqlServer的跟踪工具 看是否正确初始化了参数及属性 是否得到了结果 这样细致的跟踪再加上你的细心 应该会发现问题的 --------------------编程问答-------------------- 确实没有执行代码。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,