Java DatabaseMetaData用法案例详解
作者:liuleigang 发布时间:2023-08-18 19:08:42
一 . 得到这个对象的实例
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对象提供的是关于数据库的各种信息,这些信息包括:
数据库与用户,数据库标识符以及函数与存储过程。
数据库限制。
数据库支持不支持的功能。
架构、编目、表、列和视图等。
通过调用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()就可以完成表的反向设计了。主要步骤如下:
通过getTables()获得数据库中表的信息。
对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。
通过1,2获得信息可以生成相应的建表的SQL语句。
通过上述三步完成反向设计表的过程。
来源:https://blog.csdn.net/raymondual/article/details/53729043
猜你喜欢
- 自定义View是绘制文本有三类方法// 第一类public void drawText (String text, float x, flo
- 今天遇到一个需求对上传的图铺满水印,在网上找了半天都是在指定位置设置水印,下面代码是我通过在网上找的代码,然后改造而成的。我们先看一下效果图
- 0、前言本文主要对几种常见Java序列化方式进行实现。包括Java原生以流的方法进行的序列化、Json序列化、FastJson序列化、Pro
- Mybatis获取参数值的两种方式:${},#{}${}本质:字符串拼接,注意:单引号要加上#{}:本质:占位符赋值一、 Mybatis获取
- 解决库存扣减及订单创建时防止并发死锁的问题在我们日常开发的过程可有会遇到以下错误事务(进程 ID 82)与另一个进程被死锁在 锁 资源上,并
- 1.Java 9以前堆栈遍历到目前为止,官方解决方案是获取当前线程并调用其getStackTrace()方法:StackTraceEleme
- 如下所示://定义二维数组写法1 class numthree{public static void main(String[] args)
- 前言本文主要给大家介绍的是关于Java通过Class类获取Class对象的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的
- Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架。 Struts2不只是Struts1下一个版本,它是一个完全重写的Str
- 前言开发中常用到主从数据库来提高系统的性能。怎么样才能方便的实现主从读写分离呢?近日工作任务较轻,有空学习学习技术,遂来研究如果实现读写分离
- 本文实例为大家分享了C#实现拼手气红包算法的具体代码,供大家参考,具体内容如下一、方案1:即开即中,考虑机会均等,减少金额差较大的几率可以每
- 一、Steam的优势java8中Stream配合Lambda表达式极大提高了编程效率,代码简洁易懂(可能刚接触的人会觉得晦涩难懂),不需要写
- 一、常量用final修饰(也称最终变量)常量在声明时必须赋初值,赋值后不能再修改值常量名通常用全大写字母表示声明时需要添加final或sta
- 引言树形结构不论在生活中或者是开发中都是一种非常常见的结构,一个容器对象(如文件夹)下可以存放多种不同的叶子对象或者容器对象,容器对象与叶子
- 第一种方法:同步代码块:作用:把出现线程安全的核心代码上锁原理:每次只能一个线程进入,执行完毕后自行解锁,其他线程才能进来执行锁对象要求:理
- 本文实例为大家分享了Unity实现俄罗斯方块第一部分,供大家参考,具体内容如下准备工作1、新建一个2D项目,新建成功以后设置相机的一些参数2
- 一、连接客户端原理流程图二、功能要求1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中;2) 客户端要发给服务器的数据,
- 目录一、简介二、环境介绍三、主题1. ThemeData2. main.dart or MaterialApp四、全局配置1. Global
- 当变换Java代码为Ceylon代码时,有时候我会遇到一些Java类构造器混淆了验证与初始化的情形。让我们使用一个简单但是人为的代码例子来说
- 小程序获取手机号,后端JAVA解密流程代码微信官方文档获取手机号流程地址,先看下最好方便理解下面步骤实现思路,步骤如下1.前端需先调用官方w