ADO.NET程序設計實現獲取數據庫架構信息
ADO.NET程序設計還是比較常用的,于是我研究了一下ADO.NET程序設計,在這里拿出來和大家分享一下,希望對大家有用。在ADO.NET的對象模型的該對象充當了與數據源之間的連接,通過Connection對象來連接數據庫或者從數據庫斷開以釋放寶貴的資源。這里我們需要用到的是OleDbConnection對象的GetOleDbSchemaTable方法,定義如下:
- publicDataTableGetOleDbSchemaTable(Guidschema,object[]restrictions);
#T#方法返回一個DataTable對象;第一個參數是OleDbSchemaGuid的枚舉值,是用來指定架構信息類型,可以根據某一個值來決定所需的架構類型,如表、列、視圖等,具體可以參考MSDN;第二個參數為Restrictions的參數,作為一個oject數組數據類型,起到過濾的作用,如果把第二個參數設置為null,那就返回指定的OleDbSchemaGuid枚舉的所有信息了。下面用示例程序來進行相關說明,示例界面ADO.NET程序設計如下:這里以SqlServer的Northwind數據庫為例,在查看按鈕事件中進行了如下處理:
- privatevoidbuttonOK_Click(objectsender,System.EventArgse)
- {
- this.dataGridSchema.DataSource=GetSqlDbSchemaUsingOleDbConnection(this.textBoxConnString.Text.Trim());
- }
通過文本框把連接字符串傳入GetSqlDbSchemaUsingOleDbConnection函數,由OleDbConnection對象來連接數據庫,并獲取構架信息,
- privateDataTableGetSqlDbSchemaUsingOleDbConnection(stringconnString)
- {
- OleDbConnectionmyConn=newOleDbConnection(connString);
- myConn.Open();
- DataTabletable1=myConn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,null);
- myConn.Close();
- returntable1;
- }
上面的函數返回數據庫的所有字段,下面來看看如何通過Restrictions參數來過濾信息;參數數據可以定義為
- object[]restrictions=
- newobject[]{"TABLE_CATALOG","TABLE_SCHEMA","TABLE_NAME","COLUMN_NAME"};
具體可參考MSDN文檔。對上面函數進行修改,我們只獲取Northwind數據庫Customers表的信息:
- privateDataTableGetSqlDbSchemaUsingOleDbConnection(stringconnString)
- {
- OleDbConnectionmyConn=newOleDbConnection(connString);
- object[]restrictions=newobject[]{"Northwind","dbo","Customers",null};
- myConn.Open();
- DataTabletable1=myConn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,restrictions);
- myConn.Close();
- returntable1;
- }
另外對于Access數據庫架構信息的獲取也可以通過上面的方法來完成,
- privateDataTableGetMdbSchemaUsingOleDbConnection(stringconnString)
- {
- OleDbConnectionmyConn=newOleDbConnection(connString);
- myConn.Open();
- DataTabletable1=myConn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,null);
- myConn.Close();
- returntable1;
- }
前面的界面圖示就是執行結果,這里我用的是Access2003。