[原创]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]