数据库之元数据——DatabaseMetaData的getMetaData()方法的简单使用

22 篇文章 2 订阅
9 篇文章 0 订阅

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

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java DatabaseMetaData接口中的getCatalogs()方法用于获取数据库中所有可用的目录名称,返回一个ResultSet对象,其中包含一个包含目录名称的列。 以下是一个示例代码,演示如何使用getCatalogs()方法获取数据库中的目录名称: ```java import java.sql.*; public class Example { public static void main(String[] args) throws SQLException { // Establishing a connection to the database Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); // Retrieving the database metadata object DatabaseMetaData metaData = conn.getMetaData(); // Retrieving all the available catalogs in the database ResultSet catalogs = metaData.getCatalogs(); // Iterating through the ResultSet to print all the catalog names while(catalogs.next()) { String catalogName = catalogs.getString("TABLE_CAT"); System.out.println("Catalog Name: " + catalogName); } // Closing the ResultSet and database connection catalogs.close(); conn.close(); } } ``` 在上面的示例中,我们首先建立了一个与数据库的连接,然后使用getConnection()方法获取一个Connection对象。接下来,我们使用Connection对象的getMetaData()方法获取一个DatabaseMetaData对象。最后,我们使用DatabaseMetaData对象的getCatalogs()方法检索所有可用的目录,并使用ResultSet对象的next()和getString()方法迭代ResultSet以打印每个目录的名称。 请注意,在使用完ResultSet对象后,我们需要通过调用close()方法关闭它,以及关闭数据库连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值