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


相关推荐

  • SCI论文投稿Cover Letter的写作

    SCI论文投稿Cover Letter的写作http://www.dxy.cn/bbs/topic/19651815SCI论文投稿CoverLetter的写作和中文投稿有很大的不同,CoverLetter的撰写对于新手而言不知该写什么,而对于老手往往又被忽视,CoverLetter重要吗?可有可无吗?下面我将从科学网转载系列有关CoverLetter的帖子,但愿对于新手、老手都有所帮助:#1CoverLet

    2022年5月24日
    43
  • (一个)kafka-jstorm集群实时日志分析 它 ———kafka实时日志处理

    (一个)kafka-jstorm集群实时日志分析 它 ———kafka实时日志处理

    2022年1月1日
    60
  • 抓包工具charles手机代理抓手机包教程

    抓包工具charles手机代理抓手机包教程1、下载charles.zip压缩文件,放在电脑的一个路径下,解压charles.zip文件;2、打开charles文件夹下的charles.exe文件;3、点击工具栏的“Proxy”→“SSLProxyingSettings”→“add”_Host:输入【*】  ; Port:输入【443】→点击“OK”保存,图示如下4、获取IP地址:5、安装证书    ①电脑安装证书  …

    2022年6月5日
    28
  • 长江商学院营销学李洋教授分析大数据与精准营销

    长江商学院营销学李洋教授分析大数据与精准营销  精准营销是大数据应用领域的重要课题之一,大数据时代的精准营销可以让企业以最小的营销成本获得最大的收益。那么我们如何利用企业大数据做精准营销呢? …

    2022年7月21日
    33
  • docker安装bwapp「建议收藏」

    docker安装bwapp「建议收藏」查看Bwapp镜像dockersearchbwapp下载raesene/bwapp镜像:dockerpullraesene/bwapp查看镜像dockerimages运行镜像dockerrun-d-p8080:80929b447efd4d查看运行情况dockerps运行成功后访问IP端口使用浏览器访问http://xxxx:8080/install.phpxxxx为虚拟机对应的ip地址8080为上方run的端口号…

    2022年9月16日
    2
  • C# ManualResetEvent

    C# ManualResetEvent原文链接http://dotnetpattern.com/threading-manualreseteventManualResetEvent和AutoResetEvent一样,是另外一种.NET线程同步技术。ManualResetEvent被用于在两个或多个线程间进行线程信号发送。多个线程可以通过调用ManualResetEvent对象的WaitOne方法进入等待或阻塞状态。当…

    2022年7月13日
    20

发表回复

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

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