亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C#中使用ADOMD.NET查詢多維數據集

2019-11-14 16:22:48
字體:
來源:轉載
供稿:網友

ADOMD.NET 是用于與 Microsoft SQL Server Analysis Services 進行通信的 Microsoft .NET Framework 數據訪問接口。 ADOMD.NET 可使用 xml for Analysis 協議與分析數據源通信,方法為使用 TCP/ip 或 HTTP 連接傳輸和接收符合 XML for Analysis 規范的 SOAP 請求和響應。 命令可通過多維表達式 (MDX)、數據挖掘擴展插件 (DMX)、Analysis Services 腳本語言 (ASSL) 或者甚至是有限 SQL 語法來發送,并且可能不返回結果。 可以使用 ADOMD.NET 對象模型來查詢和操作分析數據、關鍵績效指標 (KPI) 和挖掘模型。 使用 ADOMD.NET 時,還可通過檢索與 OLE DB 兼容的架構行集或者使用 ADOMD.NET 對象模型來查看和使用元數據。

ADOMD.NET 數據訪問接口由 Microsoft.AnalysisServices.AdomdClient 命名空間表示

ADOMD.NET安裝包下載地址:

實戰,連接并查詢多維數據集:

   string connectionString = "Data Source=localhost;Catalog=MDX Step-by-Step;ConnectTo=11.0;Integrated Security=SSPI";            AdomdConnection _connection = new AdomdConnection(connectionString);            if (_connection != null)                if (_connection.State == ConnectionState.Closed)                    _connection.Open();            AdomdCommand command = _connection.CreateCommand();            StringBuilder sb = new StringBuilder();            sb.Append("WITH");            sb.Append("  MEMBER [PRoduct].[Category].[All Products].[X] AS 1+1");            sb.Append("SELECT{ ([Date].[Calendar].[CY 2002]),([Date].[Calendar].[CY 2003])}*{([Measures].[Reseller Sales Amount]) } ON COLUMNS,");            sb.Append("{ ([Product].[Category].[accessories]),([Product].[Category].[Bikes]),([Product].[Category].[Clothing]),");            sb.Append("([Product].[Category].[Components]),([Product].[Category].[X])} ON ROWS");            sb.Append("  FROM [Step-by-Step]");            command.CommandText = sb.ToString();            var xmlreader = command.ExecuteXmlReader();            CellSet cellSet = CellSet.LoadXml(xmlreader);            _connection.Close();            var dt = ToDataTable(cellSet);           var v = dt.Rows.Count;

 AdomdHelper.cs

using System;using System.Data;using Microsoft.AnalysisServices.AdomdClient;namespace Wpfapplication1{    /// <summary>    /// Summary description for AdomdHelper.    /// </summary>    public class AdomdHelper    {        #region "== Enum ============================================================"        public enum Versions        {            Server,            Provider,            Client        }        #endregion        #region "== Methods ============================================================"        //判斷連接AdomdConnection對象是State是否處于Open狀態。        public bool IsConnected(ref AdomdConnection connection)        {            return (!(connection == null)) && (connection.State != ConnectionState.Broken) && (connection.State != ConnectionState.Closed);        }        /// <summary>        /// 斷開連接        /// </summary>        /// <param name="connection">AdomdConnection對象的實例</param>        /// <param name="destroyConnection">是否銷毀連接</param>        public void Disconnect(ref AdomdConnection connection, bool destroyConnection)        {            try            {                if (!(connection == null))                {                    if (connection.State != ConnectionState.Closed)                    {                        connection.Close();                    }                    if (destroyConnection == true)                    {                        connection.Dispose();                        connection = null;                    }                }            }            catch (Exception ex)            {                throw ex;            }        }        /// <summary>        /// 建立連接        /// </summary>        /// <param name="connection">AdomdConnection對象的實例</param>        /// <param name="connectionString">連接字符串</param>        public void Connect(ref AdomdConnection connection, string connectionString)        {            if (connectionString == "")                throw new ArgumentNullException("connectionString", "The connection string is not valid.");            //    Ensure an AdomdConnection object exists and that its ConnectionString property is set.            if (connection == null)                connection = new AdomdConnection(connectionString);            else            {                Disconnect(ref connection, false);                connection.ConnectionString = connectionString;            }            try            {                connection.Open();            }            catch (Exception ex)            {                throw ex;            }        }        /// <summary>        /// 獲取OLAP數據庫。        /// </summary>        /// <param name="connection">AdomdConnection對象的實例</param>        /// <param name="connectionString">連接字符串</param>        /// <returns></returns>        public DataTable GetSchemaDataSet_Catalogs(ref AdomdConnection connection, string connectionString)        {            bool connected = true;    //判斷connection在調用此函數時,是否已經處于連接狀態            DataTable objTable = new DataTable();            try            {                // Check if a valid connection was provided.                if (IsConnected(ref connection) == false)                {                    //如果連接不存在,則建立連接                    Connect(ref connection, connectionString);                    connected = false;       //更改connection為未連接狀態。                        }                objTable = connection.GetSchemaDataSet(AdomdSchemaGuid.Catalogs, null).Tables[0];                if (connected == false)                {                    //關閉連接                    Disconnect(ref connection, false);                }            }            catch (Exception err)            {                throw err;            }            return objTable;        }        /// <summary>        /// 通過SchemaDataSet的方式獲取立方體        /// </summary>        /// <param name="connection">AdomdConnection對象的實例</param>        /// <param name="connectionString">連接字符串</param>        /// <returns></returns>        public string[] GetSchemaDataSet_Cubes(ref AdomdConnection connection, string connectionString)        {            string[] strCubes = null;            bool connected = true;   //判斷connection是否已與數據庫連接            DataTable objTable = new DataTable();            if (IsConnected(ref connection) == false)            {                try                {                    Connect(ref connection, connectionString);                    connected = false;                }                catch (Exception err)                {                    throw err;                }            }            string[] strRestriction = new string[] { null, null, null };            objTable = connection.GetSchemaDataSet(AdomdSchemaGuid.Cubes, strRestriction).Tables[0];            if (connected == false)            {                Disconnect(ref connection, false);            }            strCubes = new string[objTable.Rows.Count];            int rowcount = 0;            foreach (DataRow tempRow in objTable.Rows)            {                strCubes[rowcount] = tempRow["CUBE_NAME"].ToString();                rowcount++;            }            return strCubes;        }        /// <summary>        /// 通過SchemaDataSet的方式獲取制定立方體的維度        /// </summary>        /// <param name="connection">AdomdConnection對象的實例</param>        /// <param name="connectionString">連接字符串</param>        /// <returns></returns>        public string[] GetSchemaDataSet_Dimensions(ref AdomdConnection connection, string connectionString, string cubeName)        {            string[] strDimensions = null;            bool connected = true;   //判斷connection是否已與數據庫連接            DataTable objTable = new DataTable();            if (IsConnected(ref connection) == false)            {                try                {                    Connect(ref connection, connectionString);                    connected = false;                }                catch (Exception err)                {                    throw err;                }            }            string[] strRestriction = new string[] { null, null, cubeName, null, null };            objTable = connection.GetSchemaDataSet(AdomdSchemaGuid.Dimensions, strRestriction).Tables[0];            if (connected == false)            {                Disconnect(ref connection, false);            }            strDimensions = new string[objTable.Rows.Count];            int rowcount = 0;            foreach (DataRow tempRow in objTable.Rows)            {                strDimensions[rowcount] = tempRow["DIMENSION_NAME"].ToString();                rowcount++;            }            return strDimensions;        }        /// <summary>        /// 以connection的方式獲取立方體        /// </summary>        /// <param name="connection">AdomdConnection對象的實例</param>        /// <param name="connectionString">連接字符串</param>        /// <returns></returns>        public string[] GetCubes(ref AdomdConnection connection, string connectionString)        {            string[] strCubesName = null;            bool connected = true;   //判斷connection是否已與數據庫連接            if (IsConnected(ref connection) == false)            {                try                {                    Connect(ref connection, connection.ConnectionString);                    connected = false;                }                catch (Exception err)                {                    throw err;                }            }            int rowcount = connection.Cubes.Count;            strCubesName = new string[rowcount];            for (int i = 0; i < rowcount; i++)            {                strCubesName[i] = connection.Cubes[i].Caption;            }            if (connected == false)            {                Disconnect(ref connection, false);            }            return strCubesName;        }        /// <summary>        /// 獲取立方體的維度        /// </summary>        /// <param name="connection">AdomdConnection對象的實例</param>        /// <param name="connectionString">連接字符串</param>        /// <param name="CubeName">立方體名稱</param>        /// <returns></returns>        public string[] GetDimensions(ref AdomdConnection connection, string connectionString, string CubeName)        {            string[] strDimensions = null;            bool connected = true;            if (IsConnected(ref connection) == false)            {                try                {                    Connect(ref connection, connection.ConnectionString);                    connected = false;                }                catch (Exception err)                {                    throw err;                }            }            int rowcount = connection.Cubes[CubeName].Dimensions.Count;            strDimensions = new string[rowcount];            for (int i = 0; i < rowcount; i++)            {                strDimensions[i] = connection.Cubes[CubeName].Dimensions[i].Caption.ToString();            }            if (connected == false)            {                Disconnect(ref connection, false);            }            return strDimensions;        }        #endregion    }}
View Code

 

代碼下載

文章參考

  1. 使用 ADOMD.NET 進行開發
  2. 使用ADOMD.NET建立與Analysis Services的連接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲一区二区在线| 国产在线日韩在线| 国产精品久久久久高潮| 高清日韩电视剧大全免费播放在线观看| 亚洲人精选亚洲人成在线| 国产精品稀缺呦系列在线| 亚洲欧美中文日韩在线| 欧美激情中文字幕在线| 91久久国产精品| 久久人人爽人人爽人人片av高清| 欧美大成色www永久网站婷| 91沈先生作品| 国产成人精品视频| 久久精品视频免费播放| 亚洲国产成人av在线| 亚洲黄色av网站| 91免费福利视频| 1769国产精品| 亚洲欧美在线x视频| 中文字幕亚洲二区| 欧美电影免费观看| 最新91在线视频| 国产成人一区二区三区电影| 日韩av免费一区| 国产精品久久久久aaaa九色| 久久精品视频99| 亚洲国产欧美在线成人app| 欧美日韩国内自拍| 欧美高清电影在线看| 国产激情久久久久| 欧美猛少妇色xxxxx| 亚洲va码欧洲m码| 日韩的一区二区| 国产视频福利一区| 日韩av123| 精品国产一区二区在线| 欧美午夜激情在线| 91精品视频在线免费观看| 亚洲国产天堂网精品网站| 久久久久久久久久久91| 不卡av在线网站| 91成品人片a无限观看| 26uuu国产精品视频| xxxx欧美18另类的高清| 国产欧美精品在线播放| 亚洲综合最新在线| 亚洲精品视频二区| 国产一区二区三区在线| 性色av一区二区三区| 538国产精品视频一区二区| 日韩av片永久免费网站| 日韩高清免费观看| 国产一区二区在线免费视频| 欧美性一区二区三区| 狠狠做深爱婷婷久久综合一区| 久久精品一区中文字幕| 成人免费高清完整版在线观看| 91精品国产色综合久久不卡98| 91美女片黄在线观看游戏| 久久久久久91| 久久亚洲国产精品成人av秋霞| 精品无人国产偷自产在线| 亚洲va久久久噜噜噜久久天堂| 色综合久久久888| 亚洲国产欧美一区二区三区同亚洲| 国产精品入口尤物| 亚洲色图av在线| 精品自在线视频| 欧美久久精品一级黑人c片| 一本大道亚洲视频| 国产精品av在线| 精品国偷自产在线视频99| 日本19禁啪啪免费观看www| 91精品久久久久久久久久久久久久| 91久久中文字幕| 久久久久久91香蕉国产| 亚洲欧美综合图区| 国内精品小视频| 91香蕉国产在线观看| 57pao国产精品一区| 亚洲一区二区三区毛片| 久久精品成人动漫| www.亚洲免费视频| 日韩av在线影院| 国产精品大片wwwwww| 91po在线观看91精品国产性色| 秋霞av国产精品一区| 亚洲精品国产精品乱码不99按摩| 久久久久久久影院| 琪琪亚洲精品午夜在线| 欧美精品videosex性欧美| 中文字幕九色91在线| 精品人伦一区二区三区蜜桃免费| 欧美激情2020午夜免费观看| 久久精品美女视频网站| 久久久亚洲天堂| 97久久久免费福利网址| 亚洲美女久久久| 精品国产自在精品国产浪潮| 久久免费视频在线观看| 国产亚洲精品美女| 亚洲乱亚洲乱妇无码| 国产精品久久久| 亚洲欧美日韩国产中文专区| 92看片淫黄大片欧美看国产片| 日韩在线观看免费全集电视剧网站| 亚洲精品综合久久中文字幕| 欧美一区视频在线| 亚洲欧美日韩中文视频| 欧美极品少妇与黑人| 国产亚洲aⅴaaaaaa毛片| 国产精品视频26uuu| 欧美限制级电影在线观看| 97婷婷涩涩精品一区| 久久精品国产精品| 亚洲性夜色噜噜噜7777| 亚洲欧美综合图区| 日韩大陆欧美高清视频区| 国产成人精彩在线视频九色| 国产精品综合久久久| 黄网动漫久久久| 久久视频在线直播| 欧美午夜视频在线观看| 日韩成人av在线播放| 国产va免费精品高清在线| 一区二区三区国产视频| 久久精品99久久久香蕉| 国产精品第8页| 欧美国产日本在线| 亚洲大尺度美女在线| 欧美在线性爱视频| 欧亚精品中文字幕| 欧美激情女人20p| 亚洲国产精品999| 亚洲精品久久久久中文字幕欢迎你| 国产精品va在线播放我和闺蜜| 日韩大胆人体377p| 都市激情亚洲色图| 亚洲精品久久在线| 91免费人成网站在线观看18| 亚洲精品成人免费| 久久躁日日躁aaaaxxxx| 欧美做受高潮电影o| 在线播放国产一区中文字幕剧情欧美| 国内精品久久久久影院优| 欧美一区二区三区精品电影| 91久久久久久久久久久| 伊人久久大香线蕉av一区二区| 精品久久久久久电影| 97在线免费观看| 国内精品400部情侣激情| 久久中文字幕在线| 精品福利免费观看| 欧美重口另类videos人妖| 中文字幕日韩av电影| 黄色成人在线播放| 5278欧美一区二区三区| 亚洲香蕉在线观看| 国产一区在线播放| 久久精品成人一区二区三区| 亚洲片国产一区一级在线观看| 国产成人欧美在线观看| 国产美女久久久| 亚洲一区av在线播放|