JDBC之通过DatabaseMetaData对象了解数据库的信息

对象|数据|数据库

JSP通过JDBC对数据库管理系统进行连接以后,得到一个Connection 对象,可以从这个对象获得有关数据库管理系统的各种信息,包括数据库中的各个表,表中的各个列,数据类型,触发器,存储过程等各方面的信息。根据这些信息,JDBC可以访问一个实现事先并不了解的数据库。获取这些信息的方法都是在DatabaseMetaData类的对象上实现的,而DataBaseMetaData对象是在Connection对象上获得的。

      
        来看看下面这个例子:
 

package com.rongji.demo;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

import java.sql.DatabaseMetaData;

 

 

public class DataConn {

  public DataConn() {

  }

  public static void main(String[] args) {

    try

{

//加载驱动程序

//下面的代码为加载JDBD-ODBC驱动程序

   Class.forName("oracle.jdbc.driver.OracleDriver");

//建立连接

//用适当的驱动程序连接到DBMS,看下面的代码[自行修改您所连接的数据库相关信息]:

   String url="jdbc:oracle:thin:@192.168.4.45:1521:oemrep";

   String user = "ums";

   String password = "rongji";

//用url创建连接

   Connection con=DriverManager.getConnection(url,user,password);

 

//获取数据库的信息

   DatabaseMetaData dbMetaData = con.getMetaData();

   //返回一个String类对象,代表数据库的URL

   System.out.println("URL:"+dbMetaData.getURL()+";");

   //返回连接当前数据库管理系统的用户名。

   System.out.println("UserName:"+dbMetaData.getUserName()+";");

   //返回一个boolean值,指示数据库是否只允许读操作。

   System.out.println("isReadOnly:"+dbMetaData.isReadOnly()+";");

   //返回数据库的产品名称。

 System.out.println("DatabaseProductName:"+dbMetaData.getDatabaseProductName()+";");

   //返回数据库的版本号。

 System.out.println("DatabaseProductVersion:"+dbMetaData.getDatabaseProductVersion()+";");

   //返回驱动驱动程序的名称。

   System.out.println("DriverName:"+dbMetaData.getDriverName()+";");

  //返回驱动程序的版本号。

   System.out.println("DriverVersion:"+dbMetaData.getDriverVersion());

   //关闭连接

   con.close();

}

catch (Exception e)

{

//输出异常信息

 System.err.println("SQLException :"+e.getMessage());

 e.printStackTrace();

}

}

}

 

通过上面的例子,我们可以看出,DatabaseMetaData类的对象的实现,如下语句

<%

DatabaseMetaData datameta=con.getMetaData();

%>

DatabaseMetaData类中提供了许多方法用于获得数据源的各种信息,通过这些方法可以非常详细的了解数据库的信息。就如我们上面例子中所显示的几个信息[其他的方法请读者参考JDK API中的DatabaseMetaData类]:

 

getURL()

返回一个String类对象,代表数据库的URL。

getUserName()

返回连接当前数据库管理系统的用户名。

isReadOnly()

返回一个boolean值,指示数据库是否只允许读操作。

getDatabaseProductName()

返回数据库的产品名称。

getDatabaseProductVersion()

返回数据库的版本号。

getDriverName()

返回驱动驱动程序的名称。

getDriverVersion()

返回驱动程序的版本号。

 

时间: 2024-08-29 11:48:29

JDBC之通过DatabaseMetaData对象了解数据库的信息的相关文章

MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作

[正文]                                                                                                                                              一.JDBC的引入                                                                                               

在JDBC设计中加速JSP访问数据库

JSP程序都是模块,并且具有强大的表达-请求(presentation-request)功能.建立一个完美的数据库 访问是一个具有挑战的过程,而JDBC接口能够很好地完成这一过程.然而,嵌入于JSP代码中的JDBC代码 ,与SQL命令嵌入在JDBC一样,可以充分利用JSP的功能,为客户端建立一个整洁而简便的API.为了达到 这一目的,我们可以考虑到使用JSP操作来建立数据库接口组件. 完美的JSP设计模式是Model-View-Controller (MVC).传统三层体系为:Model为程序逻

jdbc通过1433端口连接sqlserver数据库总是失败

问题描述 jdbc通过1433端口连接sqlserver数据库总是失败 最近在做一个小项目,在android的额产品里塞中直接用jdbc连接本地服务器的sqlserver数据库的时候出现这个错误:"请验证连接属性,并检查 SQL Server 的实例正在主机上运行, 且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接" 在网上查阅了很多资料,server的端口都是1433,IP2也启动了,sql实例也都启动了,server服务也重新启动了,防火墙也关闭了

MS-sql 2005拒绝了对对象 &#039;xxx&#039; (数据库 &#039;xxx&#039;,架构 &#039;dbo&#039;)的 SELECT 权限的解决方法_mssql2005

问题:Sql server 2005 默认设置下不允许远程登陆 1 外围设置 tcp/ip 和 named pipe 同时启用 2 服务器 --〉属性 --〉安全性 --〉sql server 和windows 认证模式 问题: 拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限. 答案: 数据库(xxx) --->安全性---->架构---->dbo(属性)--->权限--->添加--->浏览--> [public]----

oracle 11g-【求助】java使用jdbc连接Oracle 11g ex版本数据库时的问题

问题描述 [求助]java使用jdbc连接Oracle 11g ex版本数据库时的问题 我下载Oracle数据库连接驱动类与SqlConnectText.java在同一目录下,是ojdbc6.jar 数据库版本是Oracle11g Express版本,SID是xe JDK是1.6版本的 然后端口1521正在被监听 这是Java类代码 import java.sql.*; public class SqlConnectTest { private static String dbUrl = "jd

【技术贴】ASPNET登录失败。MS-sql2005拒绝了对对象 &#039;&#039;xxx&#039;&#039; (数据库 &#039;&#039;xx

1."/"应用程序中的服务器错误.用户 '20110415-1530\ASPNET' 登录失败. 2.MS-sql 2005拒绝了对对象 ''xxx'' (数据库 ''xxx'',架构 ''dbo'')的 SELECT 权限的解决方法.   今天又人品爆发.IIS调试一下网站的ASP网页,结果死活打不开页面.百度无果之后,特写此贴,献于众人.(文中虽有部分和网络雷同,但是每条解决方案的加颜色部分是自己新加的解决方案,百度上面的都是无法解决的!) 先解决1."/"应用

LinkedIn 开源多媒体对象存储数据库 Ambry

LinkedIn近日开源了多媒体对象存储数据库Ambry(GitHub). LinkedIn过去使用的是一种闭源技术,非常复杂,而且也难以随着用户数和数据量的增长而扩展.LinkedIn工程总监Sriram Subramanian在博客中指出: 我们开始尝试在市场中寻找更好的替代方案,包括各种分布式文件系统.存储一体机.云服务和内部部署方案都考察过,通过权衡我们的设计目标和得失后发现,我们需要自己开发一个能更好满足我们需求的方案--Ambry,如今Ambry已经在LinkedIn的生产环境中使用

LinkedIn开源多媒体对象存储数据库Ambry

LinkedIn近日开源了多媒体对象存储数据库Ambry(GitHub). 我们开始尝试在市场中寻找更好的替代方案,包括各种分布式文件系统.存储一体机.云服务和内部部署方案都考察过,通过权衡我们的设计目标和得失后发现,我们需要自己开发一个能更好满足我们需求的方案--Ambry,如今Ambry已经在LinkedIn的生产环境中使用多年,表现良好. 虽然Facebook和Google等公司经常开源一些软件工具,但是对象数据库在开源世界依然属于一个小众产品. 很多流行的互联网公司,例如Airbnb.P

用Command对象和RecordSet对象向数据库增加记录哪一个更好_ASP基础

用Command对象和RecordSet对象向数据库增加记录哪一个更好?请问应该选择哪一个? Command是用来做参数传递的,尤其是批量参数传递.Command对象主要是向SQL语句.StoredProcude传递参数,依靠SQL的强大功能来完成数据库的操作:而RecordSet对象,我们可以看作是封装了数据对象,并提供了一系列的方法和属性来简化数据库的编程. 我们通过下面用两种方法向数据库中增加一条记录的演示,可以看出,这两个对象在处理一些问题上所用的不同的方法:RecordSet对象似乎更