通过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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nfs的默认端口号是什么

    nfs的默认端口号是什么默认是2049参考博客:https://www.cnblogs.com/powpoia/p/6553205.html

    2022年6月27日
    82
  • 如何提取微信公众号文章里边的视频地址[通俗易懂]

    1.首先,找到含视频的公众号文章,复制文章链接地址。2.在电脑端浏览器打开这个链接,在网页空白位置点击右键,然后点击“查看网页源代码”。3.在打开的源代码网页里Ctrl+F输入 v.qq.com(腾讯视频的都是以这个开头的),找到在src后面的链接。4. https://v.qq.com/x/page/*****.html,这个是腾讯视频网址的标准格式,把刚才复制的vid编号替换网址中的星号…

    2022年4月15日
    1.5K
  • 安装NGINX_nginx安装步骤

    安装NGINX_nginx安装步骤Linux安装Nginx1、下载官方下载地址:http://nginx.org/en/download.htmlnginx-1.20.2下载wgethttp://nginx.org/download/nginx-1.20.2.tar.gz2、依赖安装yum-yinstallgcczlibzlib-develpcre-developensslopenssl-devel3、编译安装3.1、解压tar-zxvfnginx-1.20.2.tar.gz3.2

    2022年10月5日
    3
  • 使用Kettle抽取数据时,出现中文乱码问题解决方案

    使用Kettle抽取数据时,出现中文乱码问题解决方案

    2021年11月23日
    35
  • matlab中的length函数「建议收藏」

    matlab中的length函数「建议收藏」在MATLAB中:size:获取数组的行数和列数length:数组长度(即行数或列数中的较大值)numel:元素总数。s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量

    2022年4月30日
    146
  • 黑盒测试方法介绍_黑盒测试两种基本方法

    黑盒测试方法介绍_黑盒测试两种基本方法2007测试用例的设计方法(全)目录:等价类划分方法边界值分析方法错误推测方法因果图方法判定表驱动分析方法正交实验设计方法功能图分析方法场景设计方法等价类划分方法:一.方法简介1.定义是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用…

    2022年10月4日
    5

发表回复

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

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