一般连接SQL数据库的连接字串:

data source=[SERVERNAME];user id=[USERNAME];password=[PASSWORD];database=[DATABASENAME]

OLE的连接字串只要在其头部增加“Provider=sqloledb;”,即:

Provider=sqloledb;data source=[SERVERNAME];user id=[USERNAME];password=[PASSWORD];database=[DATABASENAME]

需要在代码文件中加一句引用:

using System.Data.OleDb;

建立连接对象

string sql;
DataTable SchemaTable;
sql="Provider=sqloledb;data source=[SERVERNAME];user id=[USERNAME];password=[PASSWORD];database=[DATABASENAME]";
oleDbConnection conn = new OleDbConnection(sql);
conn.open();

打开连接后一般需要做个判断,防止连接失败

读取架构表信息的方法是GetOleDbSchemaTabl( Guid,Object[] ),其中Guid为OleDbSchemaGuid的成员,决定了获取指定的架构信息,Object[]为限制列数组,随OleDbSchemaGuid不同而不同。常用的OleDbSchemaGuid为Tables、Columns、Indexes 、Primary_Keys。
 
一、获取数据表字段(列)结构信息

SchemaTable=Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, [TABLENAME], null });

其中,限制列分别为 TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME,如果不限制则传递null。
此时,SchemaTable中包含一个字段结构表,此表的每个记录(每行)为[TABLENAME]的每个字段的结构信息,而SchemaTable本身的结构可以通过列信息中获取,SchemaTable的列信息是固定的,以下读取列信息的代码:

string fieldname;
string datatype;
string Outstr;
 foreach (DataColumn col in SchemaTable.Columns)
{
    fieldname=col.Name;
    datatype= col.DataType.Name;
    Outstr+=fieldname+"="+datatype+"\r\n";//生成字段信息的输出字串
}

SchemaTable中的每个列名和类型如下:
TABLE_CATALOG               String
TABLE_SCHEMA                String
TABLE_NAME                   String
COLUMN_NAME                 String
COLUMN_GUID                 Guid  
COLUMN_PROPID               Int64 
ORDINAL_POSITION            Int64 
COLUMN_HASDEFAULT           Boolean
COLUMN_DEFAULT              String
COLUMN_FLAGS                Int64 
IS_NULLABLE                 Boolean
DATA_TYPE                   Int32 
TYPE_GUID                   Guid  
CHARACTER_MAXIMUM_LENGTH    Int64 
CHARACTER_OCTET_LENGTH      Int64 
NUMERIC_PRECISION           Int32 
NUMERIC_SCALE               Int16 
DATETIME_PRECISION          Int64 
CHARACTER_SET_CATALOG       String
CHARACTER_SET_SCHEMA        String
CHARACTER_SET_NAME          String
COLLATION_CATALOG           String
COLLATION_SCHEMA            String
COLLATION_NAME              String
DOMAIN_CATALOG              String
DOMAIN_SCHEMA               String
DOMAIN_NAME                 String
DESCRIPTION                 String
COLUMN_LCID                 Int32 
COLUMN_COMPFLAGS            Int32 
COLUMN_SORTID               Int32 
COLUMN_TDSCOLLATION         Byte[]
IS_COMPUTED                 Boolean

有了SchemaTable的每个列的结构后,就可以选择性地从中取得[TABLENAME]的字段信息了

string fieldname;
string ;
 foreach (DataRow   dr in SchemaTable.Rows)
{
    fieldname=dr[COLUMN_NAME].ToString();此处的fieldname是[TABLENAME]的每个字段名,下同
    ..=dr[DATA_TYPE].ToString();
    ..;    
}

二、获取主键信息

TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
COLUMN_GUID
COLUMN_PROPID
ORDINAL
PK_NAME

转载于:https://www.cnblogs.com/CodeBlove/archive/2008/03/24/1119726.html

使用OLE方式获取数据库架构信息相关推荐

  1. 查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试

    在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息.SQL2000和SQL2005的结构略有不同. 系统表结构参考系统表详细说明. ...

  2. wordpress 外部数据接口_使用接口方式获取WordPress用户信息的方法

    今天WordPress主题站简单介绍一下WordPress系统中用户信息获取方式,今天就讲讲使用接口方式获取WordPress用户信息的方法. 接口文件如下: if ('POST' != $_SERV ...

  3. 一键获取数据库整体信息脚本

    一键获取数据库整体信息脚本 将脚本内容放spooldb.sql中,在sqlplus中执行,相关信息会自动生成5个文件,其中addm是最近一小时文件,ash是最近半小时文件,而awr文件是最近一小时和最 ...

  4. sql 获取数据库字段信息_使用DBATools获取SQL数据库详细信息

    sql 获取数据库字段信息 In the series of articles on DBATools, (see TOC at the bottom) we are exploring useful ...

  5. 浅析ado.net获取数据库元数据信息

    写这个文章源于早先对ADO.Net获取数据库元数据上的认识,去年我在阅读ADO.Net Core Reference的时候曾经注意过DataSet的FillSchema的这个方法.这方面,在我之前的随 ...

  6. C#获取数据库表信息,列信息

    获取表的信息: conn.Open();string[] restrictions = new string[4];restrictions[1] = "dbo"; DataTab ...

  7. Spring MVC 实战:三种方式获取登录用户信息

    前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie.Session.Token,不管哪种方案,都需要获取到用户信息供业务层使用. 由于获取用户信息与具体业务无关,因此在普通的 ...

  8. jdbc mysql查询整行信息_JDBC获取数据库各种信息

    当通过一个JDBC连接上一个数据的时候,我们就可以通过JDBC获取到这个数据的各种信息,比如数据库的名称.模式.表结构(及其字段).视图.函数.过程.访问权限等等一系列的信息.当然,如果你原意,你还可 ...

  9. java数据库编程(13) 获取数据库更多信息

    使用 DatabaseMetaData可以获得关于数据库的很多信息,比如支持的列,两张表之间的外键约束,查看主键约束等等. 这里的代码也不用怎么讲解了,如果前面的都懂的话,这些代码是可以看懂的. im ...

最新文章

  1. ASP.net中的几种分页方法
  2. 宝塔 mysql迁移_(2020年最新方法)如何快速迁移网站?使用宝塔一键迁移转移网站数据详细教程...
  3. iOS 模糊化效果 ANBlurredImageView的使用
  4. Python高阶函数和函数嵌套
  5. Python3中提示:no module named 'wxpy'
  6. 牛客网(剑指offer) 第十二题 数值的整数次方
  7. ubuntu搭建nodejs生产环境——快速部署手册
  8. 论文英文参考文献[10]的时候后面多空格_英文学术论文标点符号使用规范
  9. python 2.7中urllib 2 与python 3.5中 urllib的区别。
  10. SPOJ Play on Words
  11. Eclipse导入Ant项目
  12. mysql explain desc_MySQL中EXPLAIN结果的参数详解
  13. ADS20XX完全安装(任意盘)、卸载指南
  14. 清北学堂集训day1
  15. python卷积神经网络预测股价_利用神经网络预测股票市场
  16. xp大容量u盘补丁_u盘128g 个性 大容量电脑系统修复
  17. 计算机专业秃顶图片,大学被叫惨的三大专业,计算机秃顶是常事,医学专业这个就惨了!...
  18. Android中铃声总结【安卓源码解析一】
  19. 嵌入式linux开发环境搭建(VMware16.0.0+Ubuntu16.04.3_X64)
  20. java实现打字母小游戏

热门文章

  1. e 签宝携手神策数据,数据赋能智能办公产品服务双升级
  2. Quarkus 0.12.0 发布,下一代 K8s 原生 Java 框架
  3. 五个举措:现代化Jenkins 和终结“Jenkinsteins”
  4. python 长连接 mysql数据库
  5. centos7修改密码
  6. Delphi XE2 新控件 布局Panel TGridPanel TFlowPanel
  7. propertychange input change
  8. PPT快速制作精美3D柱状图
  9. Android AsyncTask简单用法
  10. Android用户界面设计学习之旅-第二站