使用c#获取access中所有表的表名与内容
以前在网上查过,似乎也可以通过读取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 |
嗯,差不多该取的信息都有了,尤其是取字段的信息,非常的详细。
正好有这个需求,网上找了好久才找到这个合适的。亲测能用。
使用c#获取access中所有表的表名与内容的更多相关文章
- activiti获取流程图中的所有信息包括变量名
今天在看activiti的变量的时候,都是由用户来设置变量,我们在后台写代码通过变量设置或取一些参数的时候,非常的不方便. 比如:设置变量的时候通过页面设置 设置之后,我们如何动态的给这个变量设置参数 ...
- Access中创建子数据表/主子数据表
摘 要:我们为什么要使用Access,而不用Excel,因为数据库可以大幅度地消除冗余数据,其方法就是将数据拆分到不同的表中,再通过“关系”建立表间的联系.那么如何确定表间的关系呢.表之间的关系是通过 ...
- 获取C#中exe程序的实例名
获取sanjiao.frmsanjiao string strPass = @"D:\WinAutoTest\sanjiao.exe"; Assembly assebly = As ...
- 获取URL中的文件的扩展名
问题: 尽可能多地写出获取文件扩展名的方法: //方法一(分割数组) function getExt($url){ $arr = explode('.',$url); $len = count($ar ...
- js 获取字符串中最后一个斜杠后面的内容
var str = "/asdasf/asfaewf/agaegr/trer/rhh"; var index = str .lastIndexOf("\/"); ...
- 转载: js jquery 获取当前页面的url,获取frameset中指定的页面的url(有修改)
转载网址:http://blog.csdn.net/bestlxm/article/details/6800077 js jquery 怎么获取当前页面的url,获取frameset中指定的页面的ur ...
- C#获取Access数据库中的所有表名和列名
//C#获取Access数据库中的所有表名和列名 string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" ...
- IOS FMDB 获取数据库表和表中的数据
ios开发中,经常会用到数据库sqlite的知识,除了增,删,改,查之外,我们说说如何获取数据库中有多少表和表相关的内容. 前言 跟数据库使用相关的一般的增删改查的语句,这里就不做解释了.在网上有很多 ...
- 获取ACCESS数据库中自增变量的值
/// <summary> /// 获取自增变量值 /// </summary> /// <returns>自增变量值</returns> public ...
随机推荐
- C与C++动态分配二维数组
C: C中使用函数malloc和free两个函数. //动态分配M*N维 int **a=(int **)malloc(sizeof(int*)*M); ;i<M;i++) a[i]=(int ...
- 【Android Training UI】创建自定义Views(Lesson 2 - 自定义Drawing)
发布在我的网站:http://kesenhoo.github.io/blog/2013/06/30/android-training-ui-creating-custom-views-lesson-2 ...
- 2014:超越炒作,进入部署SDN的时代
2013 年,我们看到了非常多新的SDN 产品.体系结构.营销活动和各种会议,一些新的标准和开源组织也进入了这个领域.当时的SDN 刚刚从炒作周期的高点回归下来.转眼到了2014 年,这一年我们会看到 ...
- 集装箱学习(两):动手模拟AOP
简单的说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. 上文已经介绍模拟IoC实现,这篇文章来动手模拟AOP. AOP简述 面向对象强调"一切皆是对象&quo ...
- ASP.NET MVC 3 配置EF自动生成模型
Tools(工具) => 扩展工具 => Nuget Tools(工具) => Nuget=>程序包管理器控制台 Nuget 程序包管理器 => Install-Pac ...
- 【27前端】CSS Reset
CSS reset就像是一种宁可错杀三千不可放过一个的做法. 一个最简单粗暴的css reset解决方案 *{ margin:0; padding:0; } 多余的话我就不再累赘,想要更多可以参考我的 ...
- SQL————高级查询
高级查询 --连接查询 select * from 表1,表2 ————形成笛卡尔积 select * from 表1,表2 where 表1.主键=表2.外键 ————主外键位置可以互换 --jo ...
- eclipse自动提示类型的作用
eclipse的自动提示功能确实十分好用,但是只是笼统的都勾上了,所有会有好多重复项,看着很眼疼. 今天就稍微研究了下,略微知道了几个类型的作用: 序号 类型 大体的中文意思 作用 1 Java Ty ...
- CRC循环校验码
为了防止数据在传输的时候丢失或被篡改,有了各种校验码. 每种CRC校验都有自己的多项式.每个多项式都有唯一对应的二进制. CRC16就如果名字一样,校验码就是16位的 如果CRC32就是32位的. 原 ...
- 自写Date工具类
以前写项目的时候总是在使用到了时间的转换的时候才在工具类中添加一个方法,这样很容易导致代码冗余以及转换的方法注释不清晰导致每次使用都要重新看一遍工具类.因此整理出经常使用的一些转换,用作记录,以便以后 ...