• 可以从Connection对象中获得有关数据库管理系统的各种信息

  • 获取这些信息的方法都是在DatabaseMetaData类中。

  • DatabaseMetaData:描述数据库的元数据对象

  • ResultSetMetaData:描述结果集的元数据对象

package com.litian.jdbc;

import java.sql.*;

/**
* @author: Li Tian
* @contact: litian_cup@163.com
* @software: IntelliJ IDEA
* @file: MetaDataTest.java
* @time: 2020/3/29 15:12
* @desc: |
*/ public class MetaDataTest { public static void main(String[] args){
testDatabaseMetaData();
testResultSetMetaData();
} /**
* ResultSetMetaData:描述结果集的元数据对象
* 可以得到结果集中的基本信息:结果集中有哪些列,列名、列的别名等。
* 结合反射可以写出通用的查询方法
*/
public static void testResultSetMetaData(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null; try {
conn = JDBCTools.getConnection();
String sql = "select id, username 姓名, pwd from t_user";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery(); // 1. 得到ResultSetMetaData对象
ResultSetMetaData rsmd = rs.getMetaData(); // 2. 得到列的个数
int columnCount = rsmd.getColumnCount();
System.out.println(columnCount); for (int i = 0; i < columnCount; i++) {
// 3. 得到列名
String columnName = rsmd.getColumnName(i + 1);
// 4. 得到列的别名
String columnLabel = rsmd.getColumnLabel(i + 1);
System.out.println(columnName + "-->" + columnLabel);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.release(rs, ps, conn);
}
} /**
* DatabaseMetaData是描述数据库的元数据对象
* 可以由Connection得到
*/
public static void testDatabaseMetaData(){
Connection conn = null;
ResultSet rs = null; try {
conn = JDBCTools.getConnection();
DatabaseMetaData data = conn.getMetaData(); // 可以得到数据库本身的一些基本信息
// 1. 得到数据库的版本号
int version = data.getDatabaseMajorVersion();
System.out.println(version); // 2. 得到连接数据库的用户名
String user = data.getUserName();
System.out.println(user); // 3. 得到MySQL中有哪些数据库
rs = data.getCatalogs();
while (rs.next()) {
System.out.println(rs.getString(1));
} } catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.release(rs, null, conn);
}
}
}

————————————————
版权声明:本文为CSDN博主「李英俊小朋友」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_21579045/article/details/105386353

MYSQL 之 JDBC(十): JDBC的元数据的更多相关文章

  1. dbutils报错:com.microsoft.sqlserver.jdbc.SQLServerException: 无法识别元数据的表

    今天用dbutils操作数据库,莫名地报错:com.microsoft.sqlserver.jdbc.SQLServerException: 无法识别元数据的表 检查了sql语句没有问题.经过仔细排查 ...

  2. Mysql在spring中jdbc.properties连接配置

    ############################## mysql的数据源 ############################## jdbc.driver=com.mysql.jdbc.D ...

  3. mysql和eclipse连接jdbc驱动配置

    环境Windows10 eclipse 64位 MySQL 一:资料准备 (MySQL,eclipse下载安装不在赘述) 配置好MySQL环境后 下载jdbc地址http://dev.mysql.co ...

  4. mybatis/callablestatement调用存储过程mysql connector产生不必要的元数据查询

    INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371dao.ITaskDao.callProce ...

  5. 【JDBC】jdbc原理总结

    1 什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库 ...

  6. JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生

    一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...

  7. 线程池-连接池-JDBC实例-JDBC连接池技术

    线程池和连接池   线程池的原理:     来看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客 ...

  8. mysql进阶(二十九)常用函数

    mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...

  9. mysql进阶(二十八)MySQL GRANT REVOKE用法

    mysql进阶(二十八)MySQL GRANT REVOKE用法   MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...

  10. mysql进阶(二十六)MySQL 索引类型(初学者必看)

    mysql进阶(二十六)MySQL 索引类型(初学者必看)   索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型.   在数 ...

随机推荐

  1. jQuery中ajax 跳入error的原因总结

    一个标准的jquery的ajax代码: $.ajax({ type: 'POST', url: 'getSecondClassification', data: {"sort2": ...

  2. Edge浏览器现已支持Tampermonkey(油猴)

    Tampermonkey,Greasemonkey,这种扩展可以让我们的浏览器自动运行我们自己定义的脚本,然后就出现了相关网站(比如https://greasyfork.org/zh-CN)让大家在上 ...

  3. Winner Winner【模拟、位运算】

    Winner Winner 题目链接(点击) 题目描述 The FZU Code Carnival is a programming competetion hosted by the ACM-ICP ...

  4. iOS-键盘弹出或隐藏时调整输入框的位置

    要达到自动调整的目标需要监听 keyboardWillShowNotification 跟 keyboardWillHideNotification, 同时需要实现点击其它地方时,通知隐藏键盘的事件 ...

  5. 大厂面试过程复盘(微信/阿里/头条均拿offer,附答案篇)

    背景 本人前端,3年经验,由于个人的原因,决定跳槽,于是大概3月开始找工作,总历时大概2个月,面试了微信/阿里/头条,三家都拿到了offer,来分享一下面经. 问题比较多,而且很多面试题都是跟个人项目 ...

  6. 动手造轮子:实现一个简单的 AOP 框架

    动手造轮子:实现一个简单的 AOP 框架 Intro 最近实现了一个 AOP 框架 -- FluentAspects,API 基本稳定了,写篇文章分享一下这个 AOP 框架的设计. 整体设计 概览 I ...

  7. 设计模式系列之工厂模式三兄弟(Factory Pattern)

    说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...

  8. MySQL数据库几种常用的索引类型使用介绍

    一.简介 MySQL目前主要有以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 二.语句 1 2 CREATE TABLE table_name[col_nam ...

  9. cb42a_c++_STL_算法_替换_replace

    cb42a_c++_STL_算法_替换_replacereplace(b,e,ov,nv),ov,old value, nv,new valuereplace_if(b,e,p,v) 根据p的条件,全 ...

  10. JDK8--07:并行流与串行流

    JDK8中,提供了并行流和串行流,使用parallel()和sequential()来处理,parallel()为并行流sequential()为串行流,两者可以相互转换,以最后一个为准 LongSt ...