使用c#獲取access中所有表的表名與內容

jopen 8年前發布 | 42K 次閱讀 C# .NET開發

以前在網上查過,似乎也可以通過讀取access系統表的方法來獲得,但是實在想不想來是什么,今天又在網上找了找,終于發現更加方便的方法,更重要的是, 這種方法也可以通用所有OLEDB數據源。

這里用到了OleDbConnection兩個方法:

GetSchema

GetOleDbSchemaTable

看MSDN的幫助,寫的很不清楚,還是用代碼來說話吧。

1、獲取OLEDB連接的架構

conn.Open();  
DataTable cnSch = conn.GetSchema();  

返回的結果為一個DataTable,如下:

MetaDataCollections 0 0
DataSourceInformation 0 0
DataTypes 0 0
Restrictions 0 0
ReservedWords 0 0
Columns 4 4
Indexes 5 4
Procedures 4 3
Tables 4 3
Views 3 3

(列名復制不過來,圖又沒辦法貼,就這樣意思一下吧)

2、然后可以指定讀取其中的內容,比如讀取所有表的信息。

DataTable tbl = conn.GetSchema("tables");  
dgv1.DataSource = tbl;  

返回的結果如下:

TABLE_NAME TABLE_TYPE

detail TABLE

detail1 TABLE

mainTask TABLE

MSysAccessStorage ACCESS TABLE

MSysAccessXML ACCESS TABLE

MSysACEs SYSTEM TABLE

MSysNavPaneGroupCategories ACCESS TABLE

MSysNavPaneGroups ACCESS TABLE

MSysNavPaneGroupToObjects ACCESS TABLE

MSysNavPaneObjectIDs ACCESS TABLE

MSysObjects SYSTEM TABLE

MSysQueries SYSTEM TABLE

MSysRelationships SYSTEM TABLE

Query1 VIEW

TagAccessLog TABLE

testDetail TABLE

testLog TABLE

testMain TABLE

testTask TABLE

3、繼續,讀取某張表的列信息,比如讀取mainTask表的信息:

DataTable colTbl = conn.GetSchema("columns", new string[] { null, null, "mainTask" });  
 dgvCn.DataSource=colTbl;  

返回結果部分列內容:

TABLE_NAME COLUMN_NAME

mainTask catalog
mainTask content
mainTask crdate
mainTask Emergency
mainTask endDate
mainTask fnrate
mainTask level
mainTask mainID
mainTask startDate
mainTask tags
mainTask title
mainTask memo
mainTask memo2

4、然后可以嘗試用另一個方法來讀取表信息:

DataTable tblSch = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);  
DataView view = tblSch.DefaultView;  
view.RowFilter = "table_type='table' or table_type='view'";  
  
  
cmbTblList.SelectedIndexChanged -= cmbTblList_SelectedIndexChanged;  
cmbTblList.DataSource = view;  
cmbTblList.DisplayMember = "Table_Name";  
cmbTblList.SelectedIndexChanged += cmbTblList_SelectedIndexChanged;  
  
dgvSch.DataSource = view;  
dgv1.DataSource = tblSch;  

返回結果:

detail TABLE
detail1 TABLE
mainTask TABLE
Query1 VIEW
TagAccessLog TABLE
testDetail TABLE
testLog TABLE
testMain TABLE
testTask TABLE

嗯,差不多該取的信息都有了,尤其是取字段的信息,非常的詳細。

正好有這個需求,網上找了好久才找到這個合適的。親測能用。

來自: http://www.cnblogs.com/liuruitao/p/5087900.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!