通过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连接的数据库信息

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • flyme开放平台_uniapp重定向

    flyme开放平台_uniapp重定向#功能概述[Fly.js](https://github.com/wendux/fly)一个基于Promise的、强大的、支持多种JavaScript运行时的http请求库.有了它,您可以使用一份http请求代码在浏览器、微信小程序、Weex、Node、ReactNative、快应用中都能正常运行。同时可以方便配合主流前端框架,最大可能的实现WriteOnceRunEverywh…

    2022年9月3日
    2
  • 双非本科22届暑期实习,成功拿到B站、阿里实习offer[通俗易懂]

    双非本科22届暑期实习,成功拿到B站、阿里实习offer[通俗易懂]拼一把不一定成功,但是不试试看肯定没有结果!1.前言想写这篇文章很久了,也有粉丝留言、私信问我打卡系列怎么断更了这么多天(狗头保命),首先给大家解释一下最近为什么“失踪了”?由于近两周要入职,找租房,整理微信公众号,所以没多少时间写博客,今天难得闲下来,做一篇近期总结给大家。关于交流群:有粉丝私信,建议创建一个学习群,大家互相分享校招经验,学习心得(我因为怕管理群太麻烦,而一拖再拖,不过也好歹建群了),大家可以通过我的博客首页关注一波公众号:兴趣使然的草帽路飞去获取交流群和内推群群.

    2022年5月21日
    48
  • ajax出现”parsererror”错误

    ajax出现”parsererror”错误1.后台控制器方法上加了@ResponseBody注解,但AJAX未加dataType:“JSON”2.后台控制器方法的返回值与指定的返回值类型不同

    2022年6月20日
    33
  • 【Hibernate】Hibernate的映射关系「建议收藏」

    【Hibernate】Hibernate的映射关系「建议收藏」【Hibernate】Hibernate的映射关系

    2022年4月25日
    28
  • 电脑桌面记事本便签_电脑上的便签软件哪个好用

    电脑桌面记事本便签_电脑上的便签软件哪个好用只不过,作为Windows复杂系统中的一个小组件,便签的功能比较简单:比如,它的提醒功能也就到此为止了,没有更进一步的提醒了,像文字弹窗提醒了、响铃声音提醒了等等。因此,一旦忙起来,记在它上面的待办事

    2022年8月3日
    6
  • psutil包

    psutil包psutil是python自带的包,用来监控内存使用率的importpsutilclassUtilize: def__init__(self): pass #CPU使用率defcpu_utilize(self):try:returnJsonRet(content=psutil.cpu_percent(interv…

    2022年6月11日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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