通过DatabaseMetaData分析当前Connnection连接的数据库信息

通过DatabaseMetaData分析当前Connnection连接的数据库信息packagejavaxxx;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.DatabaseMeta…

大家好,又见面了,我是你们的朋友全栈君。

package javaxxx;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Properties;

/**
 * 通过DatabaseMetaData分析当前Connnection连接的数据库信息
 * @author 97699
 *
 */
public class DatabaseMetaDataTest{

    private String driver;
    private String url;
    private String user;
    private String pass;
    Connection conn;
    ResultSet rs;
    public void initParm(String paramFile) throws FileNotFoundException, IOException {

        InputStream in=DatabaseMetaDataTest.class.getClassLoader().getResourceAsStream(paramFile);
        Properties props=new Properties();
        props.load(in);
        driver=props.getProperty(“driver”);
        url=props.getProperty(“url”);
        user=props.getProperty(“user”);
        pass=props.getProperty(“pass”);
    }
    public void info() throws Exception {

        try {

            Class.forName(driver);
            conn=DriverManager.getConnection(url, user, pass);
            DatabaseMetaData dbmd=conn.getMetaData();
            ResultSet rs=dbmd.getTableTypes();//获取MySQL支持所有表类型
            System.out.println(“======MySQL支持的表类型信息======”);
            printResultSet(rs);
            //获取当前数据库的所有数据表
            rs=dbmd.getTables(null, null, “%”, new String[]{“TABLE”});
            System.out.println(“========当前数据库的数据表信息=========”);
            printResultSet(rs);
            //获取book表的主键
            rs=dbmd.getPrimaryKeys(null, null, “book”);
            System.out.println(“========book表主键信息=========”);
            printResultSet(rs);
            //获取当前数据库全部存储过程
            rs=dbmd.getProcedures(null, null, “%”);
            System.out.println(“========获取当前数据库全部存储过程=========”);
            printResultSet(rs);
            //获取book表与category表之间的外键约束
            rs=dbmd.getCrossReference(null, null, “book”, null, null, “category”);
            System.out.println(“========获取book表与category表之间的外键约束=========”);
            printResultSet(rs);
            //获取book表的所有数据列
            rs=dbmd.getColumns(null, null, “book”, “%”);
            System.out.println(“========获取book表的所有数据列=========”);
            printResultSet(rs);
        }
        finally {

            if(rs!=null) {

                rs.close();
            }if(conn!=null) {

                conn.close();
            }
        }
    }
    public void printResultSet(ResultSet rs) throws SQLException {

        // TODO Auto-generated method stub
        ResultSetMetaData rsmd=rs.getMetaData();
        for(int i=0;i<rsmd.getColumnCount();i++) {

            System.out.print(rsmd.getColumnName(i+1)+”\t”);
        }
        System.out.println();
        while(rs.next()) {

            for(int i=0;i<rsmd.getColumnCount();i++) {

                System.out.print(rs.getString(i+1)+”\t”);
            }System.out.println();
        }rs.close();
        
    }
    public static void main(String[] args) throws Exception {

        DatabaseMetaDataTest dt=new DatabaseMetaDataTest();
        dt.initParm(“db.properties”);
        dt.info();
    }
}

 

通过DatabaseMetaData分析当前Connnection连接的数据库信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150994.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MATLAB循环_matlab如何循环计算

    MATLAB循环_matlab如何循环计算MATLAB循环1.   while循环   在给定条件为真时,重复一个语句或一组语句。它在执行循环体之前测试状态。语法MATLAB中while循环的语法是:while&lt;expression&gt;  &lt;statements&gt;end只要表达式(expression)为true,while循环将重复执行程序语句(statements)。当结果为非空并且…

  • VSCode 断点调试项目「建议收藏」

    VSCode 断点调试项目「建议收藏」1.安装必须程序首页下载VSCode,打开一个项目扩展安装DebuggerforChrome插件用于Chrome调试;点击扩展搜索DebuggerforChrome然后点击安装2.VScode项目配置打开项目界面按F5出现界面选择Chrome添加成功后点击调试,添加配置,自动生成launch.json,添加配置的url为iis配置地址3…

  • Mongo分库方案选型

    Mongo分库方案选型 Mongo分库方案两种形式分析: 1. mongo sharding方式:1.1. 深翻页的问题举例:当mongo的分片是5片时,分页查询(如果按照创建时间倒叙查询)第一页,每页50条数据,则mongo sharding在每个分片上取50条数据,一共50*5条数据,然后进行汇总,计算出前50条正确数据作为返回结果。如果是翻页到1000页,那么mongo sharding需要从…

  • Codeforces 451E Devu and Flowers(容斥原理)

    Codeforces 451E Devu and Flowers(容斥原理)

  • uml建模工具 哪个好用_UML建模工具

    uml建模工具 哪个好用_UML建模工具用过很多种软件画过UML图,但是一直都不怎么满意。今天无意中发现了StarUML3这个软件,不管是颜值还是功能都很对我的胃口。话不多说,开始介绍。StarUML3StarUML3下载:到官网下载即可StarUml官网:http://staruml.io/StarUML是一个复杂的软件建模工具,旨在支持敏捷和简洁的建模。下面是StarUML3的界面(颜值超高有没有)刚发现这款软…

    2022年10月28日
  • android之存储篇_SQLite存储方式「建议收藏」

    SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是:    NULL: 空值    INTEGER: 整数    REAL: 浮点数    TEXT: 字符串    BLOB: 大数据  在SQLite中,并没有专门设计BOOLEAN和DATE类型,因为BOOLEAN型可以用INTEGER的0和1代替true和false,而DATE类型则可以拥有特

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号