国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C#應(yīng)用訪問Microsoft SQL Server 2005分析服務(wù)

2019-11-18 16:36:14
字體:
供稿:網(wǎng)友

一、前言
1、運行環(huán)境

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訪問分析服務(wù)。

二、目標
查詢分析服務(wù)數(shù)據(jù)轉(zhuǎn)換為DataTable形式,在GridView中顯示。

三、實現(xiàn)
通過Adomd .NET訪問分析服務(wù)。通過MDX查詢語言查詢數(shù)據(jù)。

1、 同ADO .NET一樣,ADOMD .NET也主要有在線數(shù)據(jù)讀取器AdomdDataReader和離線數(shù)據(jù)集(類似DataSet) CellSet

2、 訪問數(shù)據(jù)的步驟為:建立連接->打開連接->建立AdomdCommand ->得到CellSet->關(guān)閉連接->將CellSet轉(zhuǎn)化為DataTable或?qū)?shù)據(jù)綁定到對應(yīng)的餅圖等統(tǒng)計圖控件

3、 代碼片斷

l         打開連接,連接到分析服務(wù)

        public void OpenConnection()

        {

            if (_connection != null)

                if (_connection.State == ConnectionState.Closed)

                    _connection.Open();

        }

l          獲得CellSet數(shù)據(jù)對象

        public CellSet ExecuteCellSet(string queryString)

        {

            OpenConnection();

 

            AdomdCommand command = _connection.CreateCommand();

 

            command.CommandText = queryString;

           

            CellSet cellSet = command.ExecuteCellSet();

           

            CloseConnection();

 

            return cellSet;

        }

l          將CellSet數(shù)據(jù)對象轉(zhuǎn)換為DataTable對象

        public DataTable ToDataTable(CellSet cs)

        {

            DataTable dt = new DataTable();

            DataColumn dc = new DataColumn();

            DataRow dr = null;

 

            //第一列:必有為維度描述(行頭)

            dt.Columns.Add(new DataColumn("Descr

 

            //生成數(shù)據(jù)列對象

            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);

            }

 

            //添加行數(shù)據(jù)

            int pos = 0;

 

            foreach (Position py in cs.Axes[1].Positions)

            {

                dr = dt.NewRow();

 

                //維度描述列數(shù)據(jù)(行頭)

                name = "";

                foreach (Member m in py.Members)

                {

                    name = name + m.Caption + "/r/n";

                }

                dr[0] = name;

 

                //數(shù)據(jù)列

                for (int x = 1; x <= cs.Axes[0].Positions.Count; x++)

                {

                    dr[x] = cs[pos++].FormattedValue;

                }

 

                dt.Rows.Add(dr);

            }

 

            return dt;

        }

5、程序調(diào)用

    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 '[圖書分銷 訂單].[層次結(jié)構(gòu)].[單位].[安徽大學(xué)     圖書館].Children'");

        sb.Append(" Member [圖書分銷 訂單].[層次結(jié)構(gòu)].[單位].[安徽大學(xué)     圖書館].[合計] as 'aggregate([AllCount])'");

        sb.Append(" Member [所占訂單數(shù)百分比] as '[訂單數(shù)量]/([訂單數(shù)量],[圖書分銷 訂單].[層次結(jié)構(gòu)].[單位].[安徽大學(xué)     圖書館].[合計])',format_string='#.00%'");

        sb.Append(" select {[Measures].[訂單數(shù)量],[Measures].[儲運數(shù)量],[Measures].[原始數(shù)量],[所占訂單數(shù)百分比]} on columns,");

        sb.Append(" {[圖書分銷 訂單].[層次結(jié)構(gòu)].[單位].[安徽大學(xué)     圖書館].Children} on rows");

        sb.Append(" from [圖書館統(tǒng)計]");

 

        DataTable dt = sa.GetDataTable(sb.ToString());

 

        gv.DataSource = dt;

        gv.DataBind();

    }

gv為一個GridView對象。除了查詢語句不同,數(shù)據(jù)綁定是一樣的,因為已經(jīng)轉(zhuǎn)換為DataTable了。

四、備注
命名空間:Microsoft.AnalysisServices.AdomdClient

程序集文件:Microsoft.AnalysisServices.AdomdClient.dll(Microsoft SQL Server 2005為9.0版;Microsoft SQL Server 2000為8.0版)

有AdomdClient當(dāng)然有AdomdServer,分析服務(wù)也包含了存儲過程和CLR的存儲過程。

五、后記
l         理論上本例也可以在Microsoft SQL Server 2000下運行。但是我的同事在WebForm下應(yīng)用時出現(xiàn)錯誤。

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

 下次有時間講講如何定時從SQL 2005更新數(shù)據(jù)到分析服務(wù)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 永平县| 惠来县| 山西省| 新绛县| 桂平市| 静安区| 大埔区| 宁德市| 都江堰市| 广州市| 昌吉市| 抚松县| 江川县| 津南区| 靖宇县| 安远县| 兴国县| 德兴市| 丹阳市| 曲阳县| 柘城县| 富阳市| 黄平县| 宜城市| 晋中市| 巴中市| 察哈| 桦川县| 阿拉善左旗| 武冈市| 贡嘎县| 中超| 揭西县| 蒙城县| 武鸣县| 克山县| 崇信县| 胶州市| 正阳县| 阳泉市| 曲阜市|