日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

發布時間:2025/5/22 C# 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [原创]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[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了。

四、備注

命名空間:Microsoft.AnalysisServices.AdomdClient

程序集文件:Microsoft.AnalysisServices.AdomdClient.dllMicrosoft SQL Server 20059.0版;Microsoft SQL Server 20008.0版)

AdomdClient當然有AdomdServer,分析服務也包含了存儲過程和CLR的存儲過程。

五、后記

l???????? 理論上本例也可以在Microsoft SQL Server 2000下運行。但是我的同事在WebForm下應用時出現錯誤。

l???????? 在微軟推出Microsoft SQL Server 2005之后,微軟又為分析服務提供了多種訪問方式。

?下次有時間講講如何定時從SQL 2005更新數據到分析服務。

轉載于:https://www.cnblogs.com/hussar/archive/2006/05/17/402883.html

總結

以上是生活随笔為你收集整理的[原创]C#应用访问Microsoft SQL Server 2005分析服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。