程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 使用ADO.NET提取數據庫架構(元數據)

使用ADO.NET提取數據庫架構(元數據)

編輯:關於SqlServer

最近在公司做一個小項目,其中一部分功能涉及到要在程序中獲得數據庫的架構(元數據)信息,所謂數據庫的架構,就是數據庫的表/視圖結構,包括數據表所包含的字段名、字段類型、長度、主鍵、外鍵信息等。記得曾經也用C++Builder工具實現過相關功能,但年代久遠,源碼也沒有保存,實現方法已經完全回憶不起來了。想想反正開發工具也換成了vs,倒不如重頭再來過。

要取得數據庫架構信息倒不是一件難度很高的事,在網絡上以"數據庫元數據"為關鍵字進行搜索,會找到很多有關方法的介紹,但多半是與數據庫系統相關的方法,例如介紹在SQL Server下哪些數據表存儲了有關元數據的信息,可以通過哪些數據庫系統提供的函數來獲取等,這裡也提供兩個有關的鏈接,有興趣的可以自行去閱讀相關文章:

http://searchdatabase.techtarget.com.cn/tips/433/3388433.sHtml(如何獲取SQL Server數據庫元數據)

http://www.pipcn.com/blog/user1/master/archives/2006/1119.sHtml(獲取SQL,Access,Oracle數據庫的元數據信息)

但是我總想著能用更為通用的方法、較少的程序代碼來完成這項工作。說實話,實現了之後我發現,如果我能夠安心下來對ADO.NET進行系統的學習,其實這個問題很容易解決,但我想找現成的實現,反而耽誤了一些時間。總之是在網絡上搜索沒能找到現成的代碼,我不得不回頭再來看ADO.Net的有關文檔。這下倒是讓我很快就找到了Connection對象的GetSchema方法獲得數據表和視圖的信息,以及Command對象的ExecuteReader方法通過帶CommandBehavior.SchemaOnly參數提取表結構,這樣,實現代碼非常簡單:

  /// <summary>
        /// 獲取數據庫的表架構信息
        /// </summary>
        /// <returns>返回當前數據源的架構信息列表</returns>

  public void GetSchema(out List<SqlSchemaInfo> lst)
        {

            lst = new List<SqlSchemaInfo>();
            //GetSchema方法所需的字符串參數,Tables和VIEws分別表示數據表和視圖

            string tables = System.Data.SqlClient.SqlClIEntMetaDataCollectionNames.Tables;
            string views = System.Data.SqlClient.SqlClientMetaDataCollectionNames.VIEws;

            //這裡創建的Connection對象僅作為示例,只實現對sqlserver和Oracle的支持
            if (_providerName.Trim() == "sqlserver")
            {
        &nb

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved