使用c#获取access中所有表的表名与内容

以前在网上查过,似乎也可以通过读取access系统表的方法来获得,但是实在想不想来是什么,今天又在网上找了找,终于发现更加方便的方法,更重要的是,这种方法也可以通用所有OLEDB数据源

 

这里用到了OleDbConnection两个方法:

GetSchema

GetOleDbSchemaTable

 

看MSDN的帮助,写的很不清楚,还是用代码来说话吧。

 

1、获取OLEDB连接的架构

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

返回的结果为一个DataTable,如下:

MetaDataCollections00
DataSourceInformation00
DataTypes00
Restrictions00
ReservedWords00
Columns44
Indexes54
Procedures43
Tables43
Views33

(列名复制不过来,图又没办法贴,就这样意思一下吧)

 

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

  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表的信息:

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

 

返回结果部分列内容:

TABLE_NAME COLUMN_NAME

mainTaskcatalog
mainTaskcontent
mainTaskcrdate
mainTaskEmergency
mainTaskendDate
mainTaskfnrate
mainTasklevel
mainTaskmainID
mainTaskstartDate
mainTasktags
mainTasktitle
mainTaskmemo
mainTaskmemo2

 

4、然后可以尝试用另一个方法来读取表信息:

  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;  

 

返回结果:

detailTABLE
detail1TABLE
mainTaskTABLE
Query1VIEW
TagAccessLogTABLE
testDetailTABLE
testLogTABLE
testMainTABLE
testTaskTABLE

 

嗯,差不多该取的信息都有了,尤其是取字段的信息,非常的详细。



转自:http://blog.csdn.net/lanman/article/details/3982385#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值