当前位置: 首页 > news >正文

DatabaseMetaData的用法(转)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一 . 得到这个对象的实例
Connection con ;
con = DriverManager.getConnection(url,userName,password);
DatabaseMetaData dbmd = con.getMetaData();

二. 方法getTables的用法
原型:
ResultSet DatabaseMetaData.getTables(String catalog,String schema,String tableName,String []type) 
此方法可返回结果集合ResultSet ,结果集中有5列, 超出会报越界异常

功能描述:得到指定参数的表信息

参数说明:
参数:catalog:目录名称,一般都为空.
参数:schema:数据库名,对于oracle来说就用户名
参数:tablename:表名称
参数:type :表的类型(TABLE | VIEW)

注意:在使用过程中,参数名称必须使用大写的。否则得到什么东西。

三. 方法getColumns的用法

功能描述:得到指定表的列信息。

原型:
ResultSet DatabaseMetaData getColumns(String catalog,String schema,String tableName,String columnName)

参数说明:
参数catalog : 类别名称
参数schema : 用户方案名称
参数tableName : 数据库表名称
参数columnName : 列名称

四、方法getPrimaryKeys的用法

功能描述:得到指定表的主键信息。

原型:
ResultSet DatabaseMetaData getPrimaryKeys(String catalog,String schema,String tableName)

参数说明:
参数catalog : 类别名称
参数schema : 用户方案名称
参数tableName : 数据库表名称

备注:一定要指定表名称,否则返回值将是什么都没有。

五、方法.getTypeInfo()的用法

功能描述:得到当前数据库的数据类型信息。

六、方法getExportedKeys的用法

功能描述:得到指定表的外键信息。

参数描述:
参数catalog : 类别名称
参数schema : 用户方案名称
参数tableName : 数据库表名称

DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:

1、数据库与用户,数据库标识符以及函数与存储过程。
2、数据库限制。
3、数据库支持不支持的功能。
4、架构、编目、表、列和视图等。

通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。

DatabaseMetaData实例的获取方法是,通过连接来获得的
Connection conn = //创建的连接。
DatabaseMetaData dbmd = Conn.getMetaData();

创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:

getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。
getDatabaseProductVersion()获得数据库的版本。返回的字符串。
getDriverVersion()获得驱动程序的版本。返回字符串。
supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集的指针。返回值为boolean,true表示支持。

上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到jdk的帮助文档中去查看类java.sql.DatabaseMetaData。

这个类中还有一个比较常用的方法就是获得表的信息。使用的方法是:
getTables(String catalog,String schema,String tableName,String[] types),

这个方法带有四个参数,他们表示的含义如下:
String catalog——要获得表所在的编目。串“”””意味着没有任何编目,Null表示所有编目。
String schema——要获得表所在的模式。串“”””意味着没有任何模式,Null表示所有模式。该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。
String tableName——指出要返回表名与该参数匹配的那些表,该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。
String types——一个指出返回何种表的数组。可能的数组项是:”TABLE”,”VIEW”,”SYSTEM TABLE”,”GLOBAL TEMPORARY”,”LOCAL TEMPORARY”,”ALIAS”,“SYSNONYM”。

通过getTables()方法返回一个表的信息的结果集。这个结果集包括字段有:TABLE_CAT表所在的编目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名称。TABLE_TYPE标的类型。REMARKS一段解释性的备注。通过这些字段可以完成表的信息的获取。

还有两个方法一个是获得列getColumns(String catalog,String schama,String tablename,String columnPattern)一个是获得关键字的方法getPrimaryKeys(String?catalog, String?schema, String?table)这两个方法中的参数的含义和上面的介绍的是相同的。凡是pattern的都是可以用通配符匹配的。getColums()返回的是结果集,这个结果集包括了列的所有信息,类型,名称,可否为空等。getPrimaryKey()则是返回了某个表的关键字的结果集。

通过getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向设计了。主要步骤如下:

1、通过getTables()获得数据库中表的信息。
2、对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。
3、通过1,2获得信息可以生成相应的建表的SQL语句。

通过上述三步完成反向设计表的过程。

转载于:https://my.oschina.net/zbrxtpgyaps/blog/23823

相关文章:

  • bash组织成树型数据结构
  • CentOS 5.4 通过yum升级php到5.3版本的两种方
  • Nginx之不能解析下载站顶部和底部的inc文件
  • 【转】 iphone开发常用代码
  • 学习笔记 124: 预备知识总结
  • Js参数值中含有单引号或双引号解决办法
  • 学习笔记 十五: mariadb
  • mysql 优化几个注意点(非完全统计)
  • Python中的tuple
  • MySQL都有哪些日志?分别都代表什么?
  • Centos 7.4 安装ipython和mysql-python遇到的问题
  • Windows XP SP3 升级故障汇总
  • 【VC+图像】图片批量处理
  • SVN 的使用(一) 命令行模式
  • 为什么我们需要域?Active Directory系列之一
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 2017 年终总结 —— 在路上
  • 2017-09-12 前端日报
  • Angular数据绑定机制
  • Centos6.8 使用rpm安装mysql5.7
  • github指令
  • GitUp, 你不可错过的秀外慧中的git工具
  • httpie使用详解
  • Less 日常用法
  • nginx 负载服务器优化
  • Redux 中间件分析
  • springboot_database项目介绍
  • STAR法则
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 免费小说阅读小程序
  • 前端_面试
  • 前端工程化(Gulp、Webpack)-webpack
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 设计模式 开闭原则
  • 设计模式走一遍---观察者模式
  • 找一份好的前端工作,起点很重要
  • ​第20课 在Android Native开发中加入新的C++类
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #LLM入门|Prompt#3.3_存储_Memory
  • (04)odoo视图操作
  • (4)Elastix图像配准:3D图像
  • (poj1.2.1)1970(筛选法模拟)
  • (笔试题)合法字符串
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)WCF的Binding模型
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (顺序)容器的好伴侣 --- 容器适配器
  • (算法)Game
  • (转)shell调试方法
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET Core 中的路径问题
  • .Net Remoting常用部署结构