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


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

 

這里用到了OleDbConnection兩個方法:

GetSchema

GetOleDbSchemaTable

 

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

 

1、獲取OLEDB連接的架構

[c-sharp] view plain copy
  1. conn.Open();  
  2. 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、然后可以指定讀取其中的內容,比如讀取所有表的信息。

[c-sharp] view plain copy
  1. DataTable tbl = conn.GetSchema("tables");  
  2. 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表的信息:

[c-sharp] view plain copy
  1. DataTable colTbl = conn.GetSchema("columns", new string[] { null, null, "mainTask" });  
  2.  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、然后可以嘗試用另一個方法來讀取表信息:

[c-sharp] view plain copy
  1. DataTable tblSch = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);  
  2. DataView view = tblSch.DefaultView;  
  3. view.RowFilter = "table_type='table' or table_type='view'";  
  4.   
  5.   
  6. cmbTblList.SelectedIndexChanged -= cmbTblList_SelectedIndexChanged;  
  7. cmbTblList.DataSource = view;  
  8. cmbTblList.DisplayMember = "Table_Name";  
  9. cmbTblList.SelectedIndexChanged += cmbTblList_SelectedIndexChanged;  
  10.   
  11. dgvSch.DataSource = view;  
  12. dgv1.DataSource = tblSch;  

 

返回結果:

 

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

 

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

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM