收藏此页 收藏此页 在线人数 54 今日访问 842 总共访问 4038620
账号:
密码:

手机 WAP 版在线服务上线!
08:15 今日月相
09月10日 八月初三 
ADO.Net 获取数据库的架构信息
分类: 软件设计与开发(.Net) 作者: 老驴 日期: 2010-01-16 00:22:28 浏览: 749

  如果给出一个 Access 数据库,如何使用 .Net 通过编程的方式知道数据库里有多少个表,以及每个表名是什么?使用 ADO.Net 中的 GetSchema 方法就可以做到。
  GetSchema 方法可以获取一个以 OLEDB、ODBC、Oracle 和 SqlClient 为数据源的数据库的架构信息。
  还是看示例来说吧!
  Dim Conn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\Access.mdb") '创建一个名为 Conn 的 OLEDB 连接对象
  Dim MyDataTable As DataTable = Conn.GetSchema() '返回的架构信息采用 DataTable 的形式
  MyDataTable.WriteXml("C:\Schema.xml") '将 DataTable 输出到文件
  打开生成的 Schema.xml 文件,内容如下:
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <MetaDataCollections>
    <CollectionName>MetaDataCollections</CollectionName>
    <NumberOfRestrictions>0</NumberOfRestrictions>
    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
  </MetaDataCollections>
  <MetaDataCollections>
    <CollectionName>DataSourceInformation</CollectionName>
    <NumberOfRestrictions>0</NumberOfRestrictions>
    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
  </MetaDataCollections>
  <MetaDataCollections>
    <CollectionName>DataTypes</CollectionName>
    <NumberOfRestrictions>0</NumberOfRestrictions>
    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
  </MetaDataCollections>
  <MetaDataCollections>
    <CollectionName>Restrictions</CollectionName>
    <NumberOfRestrictions>0</NumberOfRestrictions>
    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
  </MetaDataCollections>
  <MetaDataCollections>
    <CollectionName>ReservedWords</CollectionName>
    <NumberOfRestrictions>0</NumberOfRestrictions>
    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
  </MetaDataCollections>
  <MetaDataCollections>
    <CollectionName>Columns</CollectionName>
    <NumberOfRestrictions>4</NumberOfRestrictions>
    <NumberOfIdentifierParts>4</NumberOfIdentifierParts>
  </MetaDataCollections>
  <MetaDataCollections>
    <CollectionName>Indexes</CollectionName>
    <NumberOfRestrictions>5</NumberOfRestrictions>
    <NumberOfIdentifierParts>4</NumberOfIdentifierParts>
  </MetaDataCollections>
  <MetaDataCollections>
    <CollectionName>Procedures</CollectionName>
    <NumberOfRestrictions>4</NumberOfRestrictions>
    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
  </MetaDataCollections>
  <MetaDataCollections>
    <CollectionName>Tables</CollectionName>
    <NumberOfRestrictions>4</NumberOfRestrictions>
    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
  </MetaDataCollections>
  <MetaDataCollections>
    <CollectionName>Views</CollectionName>
    <NumberOfRestrictions>3</NumberOfRestrictions>
    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
  </MetaDataCollections>
</DocumentElement>
  XML 代码中,加粗字体,就是当前数据源下数据库的架构名称。之后,可以使用:
  Conn.GetSchema("MetaDataCollections")
  Conn.GetSchema("DataSourceInformation")
  Conn.GetSchema("DataTypes")
  ……
  来输出每个架构的信息,其实 Conn.GetSchema() 等同于 Conn.GetSchema("MetaDataCollections")
  Access 的架构名称有十个:
  MetaDataCollections 可用元数据集合的列表
  DataSourceInformation 关于数据提供程序引用的数据库实例的信息
  DataTypes 关于数据库支持的每个数据类型的信息
  Restrictions 对于每个元数据集合,存在一批可以用于限制被请求的架构信息范围的限定符
  ReservedWords 适用于该种数据库查询语言的保留字
  Columns 每个表中的每个字段的属性信息
  Indexes 每个表中的索引字段的属性信息
  Procedures 存储过程信息
  Tables 每个表的名称及其属性
  Views 每个查询表的名称及其属性
  SQL2005 的架构名称可能有以下几个:
  MetaDataCollections
  DataSourceInformation
  DataTypes
  Restrictions
  ReservedWords
  Users 数据库中的所有用户和角色信息
  Databases 当前数据源下所有数据库名称
  Tables
  Columns
  StructuredTypeMembers
  Views 每个视图的名称及其属性信息
  ViewColumns 每个视图中的每个字段的属性信息
  ProcedureParameters 每个存储过程中的每个参数信息
  Procedures 每个存储过程的信息
  ForeignKeys 每个外键的信息
  IndexColumns 每个索引字段的信息
  Indexes 每个索引的信息
  UserDefinedTypes

  现在可知,使用:Conn.GetSchema("Tables") 方法,便可取得到每个表的名称。

本章评论
发表评论
昵称:
验证码: 点击刷新
评论:

目前已输入 0/100 文字

回到顶端

 CopyRight ⓒ 2003 - 2010 imagecode.net All Rights Reserved 版权所有  陕ICP备05002647