MYSQL 之 JDBC(十): JDBC的元数据
可以从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的元数据的更多相关文章
- dbutils报错:com.microsoft.sqlserver.jdbc.SQLServerException: 无法识别元数据的表
今天用dbutils操作数据库,莫名地报错:com.microsoft.sqlserver.jdbc.SQLServerException: 无法识别元数据的表 检查了sql语句没有问题.经过仔细排查 ...
- Mysql在spring中jdbc.properties连接配置
############################## mysql的数据源 ############################## jdbc.driver=com.mysql.jdbc.D ...
- mysql和eclipse连接jdbc驱动配置
环境Windows10 eclipse 64位 MySQL 一:资料准备 (MySQL,eclipse下载安装不在赘述) 配置好MySQL环境后 下载jdbc地址http://dev.mysql.co ...
- 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 ...
- 【JDBC】jdbc原理总结
1 什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库 ...
- JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生
一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...
- 线程池-连接池-JDBC实例-JDBC连接池技术
线程池和连接池 线程池的原理: 来看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客 ...
- mysql进阶(二十九)常用函数
mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...
- mysql进阶(二十八)MySQL GRANT REVOKE用法
mysql进阶(二十八)MySQL GRANT REVOKE用法 MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...
- mysql进阶(二十六)MySQL 索引类型(初学者必看)
mysql进阶(二十六)MySQL 索引类型(初学者必看) 索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型. 在数 ...
随机推荐
- 【C#】AutoMapper 使用手册
目录 1 入门例子 2 注册 2.1 Profile 3 配置 3.1 命名约定 3.2 配置可见性 3.3 全局属性/字段过滤 3.4 识别前缀和后缀 3.5 替换字符 4 调用构造函数 5 数组和 ...
- [CF163E]e-Government
题目 点这里看题目. 分析 首先,我们不需要真的从 AC 自动机中把串删掉.由于我们计算贡献和,我们只需要在 AC 自动机上,把已经删除的串的贡献抹掉就可以了. 接着考虑询问.这是一个很基 ...
- Divisors (求解组合数因子个数)【唯一分解定理】
Divisors 题目链接(点击) Your task in this problem is to determine the number of divisors of Cnk. Just for ...
- Linux系统管理——初学者建议
学习Linux的注意事项(一) Linux严格区分大小写 Linux是严格区分大小写的,这一点和Windows不一样,所以操作时要注意区分大小写的不同,包括文件名和目录名.命令.命令选项.配置文件配置 ...
- TensorFlow从0到1之TensorFlow实现单层感知机(20)
简单感知机是一个单层神经网络.它使用阈值激活函数,正如 Marvin Minsky 在论文中所证明的,它只能解决线性可分的问题.虽然这限制了单层感知机只能应用于线性可分问题,但它具有学习能力已经很好了 ...
- Android SDK 安装与配置
1.下载sdk包 链接:https://pan.baidu.com/s/1Og8F02YBJn59LPWsJwkjUA 提取码:byu1 复制这段内容后打开百度网盘手机App,操作更方便哦 2.解压 ...
- 曹工改bug:centos下,mongodb开机不能自启动,systemctl、rc.local都试了,还是不行,要不要放弃?
问题背景 最近装个centos 7.6的环境,其中,基础环境包括,redis.nginx.mongodb.fastdfs.mysql等,其中,自启动使用的是systemctl,其他几个组件,都没啥问题 ...
- Android学习笔记基于监听的事件处理
事件处理流程 代码格式: Button btn1 = findViewById(R.id.btn1); btn1.setOnClickListener(new View.OnClickListener ...
- startActivityForResult调用另外一个Activity获取返回结果
startActivityForResult(intent,requestCode)可以调用另外一个Activity,并返回结果. 换头像案例 activity_main.xml <?xml v ...
- Spring Data 教程 - Redis
1. Redis简介 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value ...