日期:2014-05-20  浏览次数:21097 次

C# 阅读器关闭时尝试调用 MetaData 无效
        public DataSet RunProcReturn(string procName)
        {
            DataSet ds = new DataSet();
            try
            {
                SqlDataAdapter dap = CreateDataAdaper(procName, null);
                dap.Fill(ds, "tbName");
                return ds;
            }
            catch
            {
                Close();
                return ds;

            }
          
        }
  private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams)
        {
            Open();
            SqlDataAdapter dap = new SqlDataAdapter(procName, strConn);
            dap.SelectCommand.CommandTimeout = 180;   
            dap.SelectCommand.CommandType = CommandType.Text;  //执行类型:命令文本
             if (prams != null)
            {
                foreach (SqlParameter parameter in prams)
                    dap.SelectCommand.Parameters.Add(parameter);
            }
            return dap;
        }

  public void Open()
        {
            // 打开数据库连接
            Close();
            if (strConn == null)
            {
                strConn = new SqlConnection(connStr);
            }
            if (strConn.State == System.Data.ConnectionState.Closed)
                strConn.Open();

        }

    public void Close()
        {
            if (strConn != null)
            {
                if (strConn.State == ConnectionState.Open)
                {
                    strConn.Close();
                    strConn.Dispose();
                    strConn = null;
                }

            }
        }
红色字体部分总是报" 阅读器关闭时尝试调用 MetaData 无效"异常(不一定每次都报),这是怎么回事,我写的这些方法有问题么
------解决方案--------------------
  如果你那个执行正常是不是需要colse掉呢。因为你其中的某一次执行成功然后一直没有关闭。