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

这里用到了OleDbConnection两个方法:

GetSchema

GetOleDbSchemaTable

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

1、获取OLEDB连接的架构

  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、然后可以指定读取其中的内容,比如读取所有表的信息。

  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[] { 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、然后可以尝试用另一个方法来读取表信息:

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

返回结果:

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

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

正好有这个需求,网上找了好久才找到这个合适的。亲测能用。

使用c#获取access中所有表的表名与内容的更多相关文章

  1. activiti获取流程图中的所有信息包括变量名

    今天在看activiti的变量的时候,都是由用户来设置变量,我们在后台写代码通过变量设置或取一些参数的时候,非常的不方便. 比如:设置变量的时候通过页面设置 设置之后,我们如何动态的给这个变量设置参数 ...

  2. Access中创建子数据表/主子数据表

    摘 要:我们为什么要使用Access,而不用Excel,因为数据库可以大幅度地消除冗余数据,其方法就是将数据拆分到不同的表中,再通过“关系”建立表间的联系.那么如何确定表间的关系呢.表之间的关系是通过 ...

  3. 获取C#中exe程序的实例名

    获取sanjiao.frmsanjiao string strPass = @"D:\WinAutoTest\sanjiao.exe"; Assembly assebly = As ...

  4. 获取URL中的文件的扩展名

    问题: 尽可能多地写出获取文件扩展名的方法: //方法一(分割数组) function getExt($url){ $arr = explode('.',$url); $len = count($ar ...

  5. js 获取字符串中最后一个斜杠后面的内容

    var str = "/asdasf/asfaewf/agaegr/trer/rhh"; var index = str .lastIndexOf("\/"); ...

  6. 转载: js jquery 获取当前页面的url,获取frameset中指定的页面的url(有修改)

    转载网址:http://blog.csdn.net/bestlxm/article/details/6800077 js jquery 怎么获取当前页面的url,获取frameset中指定的页面的ur ...

  7. C#获取Access数据库中的所有表名和列名

    //C#获取Access数据库中的所有表名和列名    string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" ...

  8. IOS FMDB 获取数据库表和表中的数据

    ios开发中,经常会用到数据库sqlite的知识,除了增,删,改,查之外,我们说说如何获取数据库中有多少表和表相关的内容. 前言 跟数据库使用相关的一般的增删改查的语句,这里就不做解释了.在网上有很多 ...

  9. 获取ACCESS数据库中自增变量的值

    /// <summary> /// 获取自增变量值 /// </summary> /// <returns>自增变量值</returns> public ...

随机推荐

  1. LINUX 暂停、继续进程

    LINUX 暂停.继续进程 kill -STOP 1234 将该进程暂停. 如果要让它恢复到后台,用kill -CONT 1234 (很多在前台运行的程序这样是不行的) 如果要恢复到前台,请在当时运行 ...

  2. JavaEE Tutorials (26) - 批处理

    26.1批处理介绍391 26.1.1批处理作业中的步骤391 26.1.2并行处理392 26.1.3状态和判定元素392 26.1.4批处理框架功能39326.2Java EE中的批处理394 2 ...

  3. 续前篇---数据挖掘之聚类算法k-mediod(PAM)原理及实现

    上一篇博文中介绍了聚类算法中的kmeans算法.无可非议kmeans由于其算法简单加之分类效率较高 已经广泛应用于聚类应用中. 然而kmeans并非十全十美的.其对于数据中的噪声和孤立点的聚类带来的误 ...

  4. Xcoder 7.0 免证书真机测试

    相信大家已经看了WWDC大会上的内容了,在iOS9和Xcoder7.0以后真机测试不需要在购买付费账号了,(当然你要想上传appstore还是需要付费账号的). 今天我带大家来看下免证书的真机测试如何 ...

  5. TimeSpan类【转】

    TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks); //获取当前时间的刻度数 //执行某操作 ............................ . ...

  6. 热烈祝贺Polymer中文组织站点上线

    欢迎来到前端世界的明天 由于官网被墙, 所以 http://docs.polymerchina.org/ 其实是一件很有意义的事. 组件化和重用,一直是编程界几十年来前进的方向和目标,随着时间的推移和 ...

  7. pixel像素与物理像素

  8. class如何命名更规范

    相信写css的人都会遇到下面的问题: 糟糕,怎么命名这个class,好像不太贴切,要是冲突了怎么办,要不要设计成通用一点... 而改别人css代码的时候则会一直有个疑问:这个class到底是只在这个地 ...

  9. Android学习之sqlite与listview

    在android系统中使用的是sqlite数据库,前面的简易登录系统已经讲述了数据库的应用.本例的重点是实现数据库与listview的绑定.demo的数据是将个人的信息绑定到listview中,并存在 ...

  10. dom处理配置文件_待完善

    import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java ...