`
zhongxiucheng
  • 浏览: 70849 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

通过JDBC访问数据库元信息

 
阅读更多

最近打算在应用程序中做数据库元信息读取与相关管理工作,必定会有很需要攻克的技术难关,所以在此写下此文以便日后查阅.

要使用JDBC来获取数据库元信息,则其中有一个对象是必须要了解的,那就是DatabaseMetaData这个对象JDBC规范对数据库元信息的抽取的接口对象,究竟如果开始元信息的读取与管理工作,现在我也不是十分的清楚,便是其中有几个方面我是比较关注的那就是:关于表,表中的列,因为在业务系统这些信息是非常重要的,那么就先从别人的一篇关于获取表的文章开始元信息的历程吧.

实现原理:主要是利用DatabaseMetaData.getTables(...)这个方法实现的,但是每一种数据库还存在一些差异,具体见下面详解。一起jquery,17jquery

一、getTables(...)方法说明

  • catalog - 数据库目录名称,可设为null,(具体JDBC驱动的实现不一样在MySQL中指数据库名)。
  • schemaPattern - 方案名称的样式,可设为null, 具体JDBC驱动的实现不一样, 在Oracle中指用户名)。
  • tableNamePattern - 表名称的样式,可以包含匹配符比如:"TEST%"
  • types - 要包括的表类型组成的列表,可设为null,表示所有的。types的常量值为:"TABLE","VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM"

各种数据库系统对Catalog和Schema的支持和实现方式是不一样的,针对具体问题需要参考具体的产品说明书,比较简单而常用的实现方式是使用数据库名作为Catalog名,使用用户名作为Schema名,具体可参见下表:

常用数据库Catalog和Schema对照表

供应商

Catalog支持

Schema支持

Oracle

不支持

Oracle User ID

MySQL

不支持

数据库名

MS SQL Server 内容

数据库名

对象属主名,2005版开始有变

DB2

指定数据库对象时,Catalog部分省略

Catalog属主名

Sybase 一起

数据库名

数据库属主名

Informix

不支持

不需要

PointBase

不支持

数据库名

我自己对数据库实际厂商对catalog支持的测试结果如下:

catalog这个单词的中文意思为"目录",具体JDBC规范中,不同的数据库对它的解释是不<br>
* 一样的具体情况是:oracle与hsql中没有任何意义,总是返回null值;而对于myslq与<br>
* sqlserver数据这个属性被解释为数据库名称,或称为数据库实例名称就是在JDBC连接<br>
* 中的URL最后的那个部分,三个典型数据连接情况可以是下面的某种样式:<br>
* jdbc:oracle:thin:@127.0.0.1:1521:ORCL<br>
* jdbc:mysql://127.0.0.1:3306/test<br>
* jdbc:jtds:sqlserver://127.0.0.1:1433/pubs<br>
* 那么在mysql中catalog被解释成test,而在sqlserver中catalog被解释成pubs,<br>
* 而在oracle中catalog并不解释成ORCL.这可能与数据本身的实现机制有关系,至于<br>
* oracle为什么要将catalog解释为null值我并不十分的清楚,我推测oracle数据库<br>
* 在结构似乎比其它数据多一个层次,其它厂商所谓的多个数据库实例有点类似于oracle<br>
* 数据的表空间的概念,oracle自己的实例似乎比这个还要高一个层次.<br>
* 究竟是什么意思就不去管它了,只要知道在oracle中的这个catalog是没有意义的

内容来自17jquery

二、常用数据库举例

1. MySQL示例

url = jdbc:mysql://localhost:3306/michaeldemo

user = "root";

getTables("michaeldemo", null, tableName,new String[] { "TABLE" });

看到这有人会问,你上面的对照表中不是说过MySQL不支持Catalog,而是支持Schema,这里怎么又设置第一个参数呢?不是互相矛盾么?的确是有这个疑问,不过当你看过MySQL的JDBC驱动源码后你就会明白其中原因了,我摘录一部分实现代码具体如下:

一起jquery,17jquery

可知参数catalog在MySQL中实际是当做Schema来用的,所以这就解释了为什么mysql中设置的却是参数catalog的值。

2. Oracle示例

url = jdbc:oracle:thin:@localhost:1521:ORA11g

user = "demo";

getTables(null, "DEMO", tableName,new String[] { "TABLE" });

一起jquery,17jquery

二、测试代码

JdbcCheckTableExitDemo.java

Oracle中运行结果:

getTables查询信息如下:
TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE
null DEMO TB_MYTEST TABLE

MySQL中运行结果:内容来自17jquery

getTables查询信息如下:
TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE
michaeldemo null TB_MYTEST TABLE

分享到:
评论

相关推荐

    数据库概论实验范文实验八:通过JDBC方式访问数据库

    实验八的主题是“通过JDBC方式访问数据库”,这是数据库概论课程中的一项重要实践内容。JDBC(Java Database Connectivity)是Java语言中用于与各种数据库交互的一种标准接口,由Sun Microsystems开发并定义,现已...

    通过JDBC访问数据库--应用操作

    通过JDBC访问数据库~~入门必备应用操作

    jdbc访问数据库\jdbc方式直接访问数据库环境的配置

    ### JDBC访问数据库及环境配置详解 #### 一、引言 JDBC(Java Database Connectivity)是一种用于执行SQL语句的标准Java API,它可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC...

    JDBC访问数据库步骤

    JDBC 访问数据库步骤 JDBC(Java Database Connectivity)是 Java 语言中用来访问数据库的 API,提供了一种标准的方式来连接和操作数据库。下面是 JDBC 访问数据库的步骤: 步骤 1:加载对应数据库驱动 在使用 ...

    jdbc访问数据库的步骤

    ### JDBC访问数据库的步骤与原理 #### JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了诸如...

    jdbc访问数据库

    这是使用jdbc访问数据库的方法,很好的,很详细的讲解了如何使用jdbc连接数据库

    JSP通过JDBC访问数据库

    是一个最简单,也是学习jsp必须会的一个入门实验----通过jdbc连接数据库。 采用jsp+access数据库实现,同时使用javabean通过jdbc连接数据库。运行结果将显示从数据库查询出的图书。里面包含了javabean的源代码及解释...

    数据库实验8 java连接数据库(JDBC代码+报告)

    《数据库系统概论》课程之实验八,通过JDBC访问数据库。本文件中包含实验报告一份,可运行代码一份与JDBC的驱动jar包。 程序实现了使用Java语言编程实现对数据库的访问,所有的SQL操作均在自己建立的新库里进行,...

    实验八-通过JDBC访问数据库.doc.doc

    本实验报告的主要目的是熟悉使用 JDBC 来进行数据库应用程序的设计,熟悉通过 JDBC 接口编程访问数据库并对数据库进行操作。实验中,我们使用 KingbaseES 数据库管理系统和 KingbaseES JDBC Driver,使用 Java 语言...

    JDBC访问数据库的优化策略

    ### JDBC访问数据库的优化策略详解 #### 一、引言 在现代企业级Java应用中,数据库访问扮演着至关重要的角色。数据库不仅是数据资源的中心,还是支撑前端应用高效运行的关键。通过Java Database Connectivity...

    用java JDBC访问数据库全部内容

    本教程将详细介绍如何使用Java JDBC访问数据库的全过程,包括连接数据库、执行SQL语句、处理结果集以及关闭资源。 首先,要使用JDBC,我们需要在Java项目中引入数据库驱动的jar包。对于不同的数据库(如MySQL、...

    实验八通过JDBC方式访问数据库

    实验八“通过JDBC方式访问数据库”是针对数据库系统概论的一个实践环节,旨在让学生掌握使用Java语言通过JDBC(Java Database Connectivity)接口来设计数据库应用程序,以及对数据库进行操作。JDBC是一种标准API,...

    实验7-通过JDBC访问数据库.doc

    ### 实验7-通过JDBC访问数据库 #### 实验目的 - **理解数据库访问的基本原理:**通过本实验的学习,学生能够深入理解数据库存储的特点、数据库访问的基本概念和方法,尤其是掌握Java数据库连接(JDBC)的核心概念...

    实验3 JDBC操作数据库3

    实验3 JDBC操作数据库3主要目的是通过Java的JDBC技术来熟悉和掌握数据库的连接与操作。这个实验涉及了以下几个核心知识点: 1. **MySQL数据库**:实验中提到了使用MySQL作为关系型数据库管理系统,它是开源且广泛...

    JDBC与Java数据库编程

    JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一的访问接口。JDBC的目标是允许开发人员能够编写数据库独立的应用程序,即应用程序无需依赖于底层数据库的具体...

    2022年在Servlet中使用JDBC访问数据库.pptx

    "Java Servlet 中使用 JDBC 访问数据库" Java Servlet 是一种服务器端的 Java 应用程序,用于处理 HTTP 请求和响应,而 JDBC(Java Database Connectivity)是 Java 语言中用来访问数据库的 API。现在,在 Servlet ...

    JDBC连接数据库方法文档

    它提供了一种统一的方式来访问各种类型的数据库,包括关系数据库、对象数据库和文本数据库等。下面是 JDBC 连接数据库的详细方法文档。 一、加载 JDBC 驱动程序 在连接数据库之前,首先要加载想要连接的数据库的...

    利用JDBC访问数据库的小实验

    实验实现的功能,check.jsp页面连接数据库test,接收index.jsp页面的输入并根据输入情况在数据库中进行查询,若id和password都能通过查询,则转向welcome.jsp页面,显示“欢迎你,XXX!”的字样,其中XXX为用户name...

    JDBC连接数据库步骤及代码

    为了方便开发者进行这些操作,Sun公司推出了一套标准的Java访问数据库的API——Java Database Connectivity(简称JDBC)。通过JDBC,Java程序可以连接多种类型的数据库,如MySQL、Oracle、SQL Server等。本文将详细...

    JDBC数据库访问技术

    JDBC数据库访问技术

Global site tag (gtag.js) - Google Analytics