C#应用访问Microsoft SQL Server 2005分析服务
日期:2007年7月12日 作者: 查看:[大字体 中字体 小字体]-
一、前言
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[0].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[1].Positions)
{
dr = dt.NewRow();
//维度描述列数据(行头)
name = "";
foreach (Member m in py.Members)
{
name = name + m.Caption + "\r\n";
}
dr[0] = name;
//数据列
for (int x = 1; x <= cs.Axes[0].Positions.Count; x++)
{
dr[x] = cs[pos++].FormattedValue;
}
dt.Rows.Add(dr);
}
return dt;
}
5、程序调用
BaseComponent.Data.SqlAnalysisService sa
= new SqlAnalysisService("Data Source=localhost;Catalog=LibraryStat");
protected void Page_Load(object sender, EventArgs e)
{
StringBuilder sb=new StringBuilder();
sb.Append("with ");
sb.Append(" set [AllCount] as '[图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].Children'");
sb.Append(" Member [图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].[合计] as 'aggregate([AllCount])'");
sb.Append(" Member [所占订单数百分比] as '[订单数量]/([订单数量],[图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].[合计])',format_string='#.00%'");
sb.Append(" select {[Measures].[订单数量],[Measures].[储运数量],[Measures].[原始数量],[所占订单数百分比]} on columns,");
sb.Append(" {[图书分销 订单].[层次结构].[单位].[安徽大学 图书馆].Children} on rows");
sb.Append(" from [图书馆统计]");
DataTable dt = sa.GetDataTable(sb.ToString());
gv.DataSource = dt;
gv.DataBind();
}
gv为一个GridView对象。除了查询语句不同,数据绑定是一样的,因为已经转换为DataTable了。
四、备注
- [1] [2] 下一页
-
- C#应用访问Microsoft SQL Server 2005分析服务 相关文章:
- ·C#应用访问Microsoft SQL Server 2005分析服务
- C#应用访问Microsoft SQL Server 2005分析服务 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:用C#实现pdf文件的完整性验证
精品推荐
热点TOP10
- ·用C#写计算器程序
- ·C#编写的windows计算器-源代码
- ·c#操作word表格
- ·AspNetPager分页控件--使用方法
- ·C#導出Excel源碼
- ·ASP.NET技巧:GridView控件自定义分页详解
- ·ASP.NET购物车的实现及结算处理
- ·客户端回调实现gridView无刷新分页
- ·图片保存到数据库和从数据库读取图片并显示(c#)
- ·ASP.NET中数据库的操作初步----增加、删除、修改
- ·C#获取本地计算机名IP,Mac地址
- ·ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!
- ·VS 2008和.NET 3.5 Beta2新特性介绍
- ·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
- ·Asp.net文件上传操作
- ·通常C#面试题
- ·ASP.NET无限级分类的非递归实现(存储过程版)
- ·身份证号码15位升18位(C#)
- ·asp.net开发wap程序必备:识别来访手机品牌型号
- ·ASP.NET一个最简单的会员登陆代码
特别推荐
- ·ASP.NET之上传文件管理策略
- ·ASP.NET程序中常用的三十三种代码
- ·ASP.Net中保护自定义的服务器控件
- ·C#设计的一个向导程序(Wizard)框架
- ·.net中即时消息发送的实现……
- ·ASP.NET动态创建控件之绝境求生
- ·.NET调用Oracle存储过程,使用数组类型的参数(如ArrayList)
- ·C#中水晶按钮的程序生成
- ·日历函数单元
- ·图片保存到数据库和从数据库读取图片并显示(c#)
- ·ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!
- ·C#中四种进程或线程同步互斥的控制方法
- ·[C#]解决读写包含汉字的txt文件时乱码的问题
- ·AspNetPager分页控件--使用方法
- ·六步使用ICallbackEventHandler实现无刷新回调
- ·从 ASP.NET 服务器控件插入客户端脚本
- ·C#導出Excel源碼
- ·Asp.net直接保存文件到客户端
- ·如何在上传的图片上写字
- ·Access 通用数据访问类(asp.net 2.0 c#)
