DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文讲解DatabaseMetaData和ResultSetMetaData接口获取元数据的方法。
package com;import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;public class testMatadata {
public static void main(String[] args) {Connection conn=null;//1. JDBC连接MYSQL的代码很标准。 String DRIVER="com.mysql.jdbc.Driver";String URL="jdbc:mysql://127.0.0.1:3306/test";String USER="root";String PASSWORD="root";try {//1.加载驱动程序Class.forName(DRIVER);//2.获得数据库链接conn=DriverManager.getConnection(URL, USER, PASSWORD);DatabaseMetaData dbmd = conn.getMetaData(); ResultSet rs = null; System.out.println("数据库已知的用户: "+ dbmd.getUserName()); System.out.println("数据库的系统函数的逗号分隔列表: "+ dbmd.getSystemFunctions()); System.out.println("数据库的时间和日期函数的逗号分隔列表: "+ dbmd.getTimeDateFunctions()); System.out.println("数据库的字符串函数的逗号分隔列表: "+ dbmd.getStringFunctions()); System.out.println("数据库供应商用于 'schema' 的首选术语: "+ dbmd.getSchemaTerm()); System.out.println("数据库URL: " + dbmd.getURL()); System.out.println("是否允许只读:" + dbmd.isReadOnly()); System.out.println("数据库的产品名称:" + dbmd.getDatabaseProductName()); System.out.println("数据库的版本:" + dbmd.getDatabaseProductVersion()); System.out.println("驱动程序的名称:" + dbmd.getDriverName()); System.out.println("驱动程序的版本:" + dbmd.getDriverVersion()); System.out.println("数据库中使用的表类型"); rs = dbmd.getTableTypes(); while (rs.next()) { System.out.println(rs.getString("TABLE_TYPE")); }// 获取连接PreparedStatement pstmt = conn.prepareStatement("select * from test.user ");rs = pstmt.executeQuery();// 得到结果集元数据//目标:通过结果集元数据,得到列的名称ResultSetMetaData rs_metaData = rs.getMetaData();while (rs.next()) {int count = rs_metaData.getColumnCount();for (int i=0; i<count; i++) {// 得到列的名称String columnName = rs_metaData.getColumnName(i + 1);// 获取每一行的每一列的值Object columnValue = rs.getObject(columnName); System.out.print(columnName + "=" + columnValue + ",\n");}}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} }
}
输出
数据库已知的用户: root@localhost
数据库的系统函数的逗号分隔列表: DATABASE,USER,SYSTEM_USER,SESSION_USER,PASSWORD,ENCRYPT,LAST_INSERT_ID,VERSION
数据库的时间和日期函数的逗号分隔列表: DAYOFWEEK,WEEKDAY,DAYOFMONTH,DAYOFYEAR,MONTH,DAYNAME,MONTHNAME,QUARTER,WEEK,YEAR,HOUR,MINUTE,SECOND,PERIOD_ADD,PERIOD_DIFF,TO_DAYS,FROM_DAYS,DATE_FORMAT,TIME_FORMAT,CURDATE,CURRENT_DATE,CURTIME,CURRENT_TIME,NOW,SYSDATE,CURRENT_TIMESTAMP,UNIX_TIMESTAMP,FROM_UNIXTIME,SEC_TO_TIME,TIME_TO_SEC
数据库的字符串函数的逗号分隔列表: ASCII,BIN,BIT_LENGTH,CHAR,CHARACTER_LENGTH,CHAR_LENGTH,CONCAT,CONCAT_WS,CONV,ELT,EXPORT_SET,FIELD,FIND_IN_SET,HEX,INSERT,INSTR,LCASE,LEFT,LENGTH,LOAD_FILE,LOCATE,LOCATE,LOWER,LPAD,LTRIM,MAKE_SET,MATCH,MID,OCT,OCTET_LENGTH,ORD,POSITION,QUOTE,REPEAT,REPLACE,REVERSE,RIGHT,RPAD,RTRIM,SOUNDEX,SPACE,STRCMP,SUBSTRING,SUBSTRING,SUBSTRING,SUBSTRING,SUBSTRING_INDEX,TRIM,UCASE,UPPER
数据库供应商用于 'schema' 的首选术语:
数据库URL: jdbc:mysql://127.0.0.1:3306/test
是否允许只读:false
数据库的产品名称:MySQL
数据库的版本:5.7.26-log
驱动程序的名称:MySQL Connector Java
驱动程序的版本:mysql-connector-java-5.1.32 ( Revision: jess.balint@oracle.com-20140716155848-mlwabor66widht1n )
数据库中使用的表类型:
LOCAL TEMPORARY
SYSTEM TABLE
SYSTEM VIEW
TABLE
VIEW
user_id=1,
user_name=fanny,
如图:
数据库信息:
更加详细的使用请看博客:
https://blog.csdn.net/chen_zw/article/details/18816599
https://www.jianshu.com/p/b5b6278725d8















