ispsh 发表于 2015-7-1 14:46:32

[原创]C#应用访问Microsoft SQL Server 2005分析服务

  接上次建立的多维数据集

一、前言
1、运行环境
Windows 2003 Server Enterprise Edition with Service Pack 1
Microsoft SQL Server 2005 with Service Pack 1(包含Analysis Service)
Visual Studio 2005 Team Suite
2、本文使用Microsoft SQL Server 2000下也可使用的ADOMD .NET访问分析服务。
二、目标
查询分析服务数据转换为DataTable形式,在GridView中显示。
三、实现
通过Adomd .NET访问分析服务。通过MDX查询语言查询数据。
1、同ADO .NET一样,ADOMD .NET也主要有在线数据读取器AdomdDataReader和离线数据集(类似DataSet) CellSet
2、访问数据的步骤为:建立连接->打开连接->建立AdomdCommand ->得到CellSet->关闭连接->将CellSet转化为DataTable或将数据绑定到对应的饼图等统计图控件
3、代码片断
l         打开连接,连接到分析服务
      public void OpenConnection()
      {
            if (_connection != null)
                if (_connection.State == ConnectionState.Closed)
                  _connection.Open();
      }
l          获得CellSet数据对象
      public CellSet ExecuteCellSet(string queryString)
      {
            OpenConnection();

            AdomdCommand command = _connection.CreateCommand();

            command.CommandText = queryString;
            
            CellSet cellSet = command.ExecuteCellSet();
            
            CloseConnection();

            return cellSet;
      }
l          将CellSet数据对象转换为DataTable对象
      public DataTable ToDataTable(CellSet cs)
      {
            DataTable dt = new DataTable();
            DataColumn dc = new DataColumn();
            DataRow dr = null;

            //第一列:必有为维度描述(行头)
            dt.Columns.Add(new DataColumn("Description"));

            //生成数据列对象
            string name;

            foreach (Position p in cs.Axes.Positions)
            {
                dc = new DataColumn();
                name = "";
                foreach (Member m in p.Members)
                {
                  name = name + m.Caption + " ";
                }

                dc.ColumnName = name;
                dt.Columns.Add(dc);
            }

            //添加行数据
            int pos = 0;

            foreach (Position py in cs.Axes.Positions)
            {
                dr = dt.NewRow();

                //维度描述列数据(行头)
                name = "";
                foreach (Member m in py.Members)
                {
                  name = name + m.Caption + "\r\n";
                }
                dr = name;

                //数据列
                for (int x = 1; x
页: [1]
查看完整版本: [原创]C#应用访问Microsoft SQL Server 2005分析服务