使用JDBC驱动程序处理元数据
使用 JDBC 驱动程序处理元数据
一、前言
Java 通过JDBC获得连接以后,得到一个Connection 对象,可以从这个对象获得有关数据库管理系统的各种信息,包括数据库中的各个表,表中的各个列,数据类型,触发器,存储过程等各方面的信息。根据这些信息,JDBC可以访问一个实现事先并不了解的数据库。
获取这些信息的方法都是在DatabaseMetaData接口的实现类的对象上实现的,而DataBaseMetaData对象是在Connection对象上获得的。而获取查询结果集数据元我们就要提到ResultMetaData。
二、DatabaseMetaData接口
java.sql.DatabaseMetaData接口由驱动程序供应商实现,让用户了解 Database Management System (DBMS) 在与驱动程序(基于与其一起使用的 JDBCTM 技术(“JDBC 驱动程序”))相结合时的能力。不同的关系 DBMS 常常支持不同的功能,以不同方式实现这些功能,并使用不同的数据类型。此外,驱动程序可以实现 DBMS 提供的顶级功能。此接口中的方法返回的信息关系到一起工作的特定驱动程序和特定 DBMS 的能力。注意,正如此文档中所使用的那样,术语“数据库”通常既指驱动程序,又指 DBMS。
此接口的用户通常是一个需要发现如何处理底层 DBMS 的工具。对于试图与多个 DBMS 一起使用的应用程序而言尤其如此。例如,一个工具可能使用 getTypeInfo 方法找出可以在 CREATE TABLE 语句中使用的数据类型。或者用户可能调用 supportsCorrelatedSubqueries 方法查看是否可以使用相关子查询,或者调用 supportsBatchUpdates 查看是否可以使用批量更新。
有些 DatabaseMetaData 方法以 ResultSet 对象的形式返回信息列表。常规 ResultSet 方法(比如 getString 和 getInt)可用于从这些 ResultSet 对象中获取数据。如果给定形式的元数据不可用,则将返回一个空 ResultSet。对于被定义为由 ResultSet 对象的给定方法所返回的列以外的其他列,可以由 JDBC 驱动程序供应商定义,且必须通过其列标签访问。
有些 DatabaseMetaData 方法使用 String 模式的参数。这些参数都有 fooPattern 这样的名称。在模式 String 中,"%" 表示匹配 0 个或多个字符的任何子字符串,"_" 表示匹配任何一个字符。仅返回匹配搜索模式的元数据项。如果将搜索模式参数设置为 null,则从搜索中删除参数标准。
DatabaseMetaData接口中提供了许多方法用于获得数据源的各种信息,通过这些方法可以非常详细的了解数据库的信息,常用的方法有:
①getURL():返回一个String类对象,代表数据库的URL。
②getUserName():返回连接当前数据库管理系统的用户名。
③isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。
④getDatabaseProductName():返回数据库的产品名称。
⑤getDatabaseProductVersion():返回数据库的版本号。
⑥getDriverName():返回驱动驱动程序的名称。
⑦getDriverVersion():返回驱动程序的版本号。
三、ResultSetMetaData接口
java.sql.ResultSetMetaData接口可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。以下代码片段创建 ResultSet 对象 rs,创建 ResultSetMetaData 对象 rsmd,并使用 rsmd 查找 rs 有多少列,以及 rs 中的第一列是否可以在 WHERE 子句中使用。
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
boolean b = rsmd.isSearchable(1);
可用于获取关于 ResultSet 对象中列的类型和属性信息的常用方法:
①getColumnName(int column):获取指定列的名称
②getColumnCount():返回当前 ResultSet 对象中的列数。
③getColumnTypeName(int column):检索指定列的数据库特定的类型名称。
④getColumnDisplaySize(int column):指示指定列的最大标准宽度,以字符为单位。
⑤isNullable(int column):指示指定列中的值是否可以为 null。
⑥isAutoIncrement(int column):指示是否自动为指定列进行编号,这样这些列仍然是只读的。
如果,您对我的这篇博文有什么疑问,欢迎评论区留言,大家互相讨论学习。
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博文感兴趣,可以关注我的后续博客,我是【AlbertRui】。转载请注明出处和链接地址,欢迎转载,谢谢!
使用JDBC驱动程序处理元数据的更多相关文章
- 通过 JDBC 驱动程序使用大容量复制
Microsoft SQL Server 包含一个名为 bcp 的受欢迎的命令行实用工具,以便将较大文件快速大容量复制到 SQL Server 数据库的表或视图中. SQLServerBulkCopy ...
- <转>JDBC获取DB元数据
原文链接:http://jiauwu.iteye.com/blog/1307617 package com.util.jdbc; import java.sql.Connection; import ...
- 注册Jdbc驱动程序的三种方式
注册Jdbc驱动程序的三种方式 1. Class.forName("com.mysql.jdbc.Driver"); 2. DriverManager.registerDriver ...
- 常见的JDBC驱动程序名称和数据库URL
RDBMS JDBC驱动程序名称 ...
- JDBC驱动程序注册 JDBC简介(二)
使用JDBC进行数据库操作的第一步就是驱动注册(当然你得先导入JAR). 驱动注册有多种方式,第一步必然是获得正确的驱动名称与URL格式 驱动名称与URL格式 RDBMS 驱动程序名称 ...
- 在Netbeans的项目中添加JDBC驱动程序
想要使用Java连接MySQL数据库,必须在环境中加入配置JDBC驱动程序 Netbeans中添加JDBC的过程是: 1.首先需要下载JDBC 在百度中搜索“mysqljdbc驱动下载”,找到官网 或 ...
- 注册mySQL到JDBC驱动程序方法浅谈
一.注册方法(4种) 1)服务提供者框架: 符合JDBC 4.0规范的驱动程序包含了一个文件META-INF/services/java.sql.Driver,在这个文件中提供了JDBC驱动实现的类名 ...
- JAVA-数据库之加载JDBC驱动程序
相关资料:<21天学通Java Web开发> 加载JDBC驱动程序 JiaZaiDemo.jsp <%@ page language="java" content ...
- JDBC驱动程序类型
JDBC驱动程序是什么? JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互. 例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数 ...
随机推荐
- 优化 Ubuntu
优化Ubuntu 1. 更换 apt 源 echo 'deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe mul ...
- 在WPF中嵌入WebBrowser可视化页面
无论是哪种C/S技术,涉及数据可视化就非常的累赘了,当然大神也一定有,只不过面向大多数人,还是通过网页来实现,有的时候不想把这两个功能分开,一般会是客户的原因,所以我们打算在WPF中嵌入WebBrow ...
- 阿里云nas使用记录
公司买了阿里云的nas服务用来共享存储,多个web服务器共同挂载同一个nas服务.挂载过程中出现如下报错 NAS报错: [root@BJ-SBC fs]# mount -t nfs 10.10.8.1 ...
- 利用dockerfile 安装一个tomcat7
FROM docker.io/centos #定义自己的说明 MAINTAINER jim ming "107420988@qq.com" #切换镜像目录,进入/usr/local ...
- codeforces 327 B. Hungry Sequence
题目链接 题目就是让你输出n个数的序列,要保证该序列是递增的,并且第i个数的前面不能保护它的约数,我直接先对前100000的素数打表,然后输出前n个,so easy. //cf 191 B #incl ...
- Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 - 高级滑动(超详解)
简介 奈何桥上叹奈何,三生石前憾三生,彼岸花下非彼岸,奈何三生彼岸人. 相传过了鬼门关便上一条路叫黄泉路,路上盛开着只见花,不见叶的彼岸花.花叶生生两不见,相念相惜永相失,路尽头有一条河叫忘川河,河上 ...
- C#连接SQL Anywhere 12 数据库
using System;using System.Data.Common; namespace ConsoleApplication27{ class Program { ...
- JVM总结(二)
JVM总结(2)java内存区域.字节码执行引擎 1.内存区域 程序计数器:知道线程执行位置,保证线程切换后能恢复到正确的执行位置. 虚拟机栈:存栈帧.栈帧里存局部变量表.操作栈.动态连接.方法返回地 ...
- 史上最全面的SignalR系列教程-3、SignalR 实现推送功能-集线器类实现方式
1.概述 通过前两篇 史上最全面的SignalR系列教程-1.认识SignalR 史上最全面的SignalR系列教程-2.SignalR 实现推送功能-永久连接类实现方式 文章对SignalR的介绍, ...
- Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
转载来源 对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚. ...