-
可以从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); } } }