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


相关推荐

  • JSP/Servlet工作原理[通俗易懂]

    JSP/Servlet工作原理[通俗易懂]JSP/Servlet工作原理ServletServlet没有main方法,不能够独立运行,它的运行需要容器的支持,Tomcat是最常用的JSP/Servlet容器。Servlet运行在Servlet容器中,并由容器管理从创建到销毁的整个过程Servlet的生命周期加载和实例化Servlet容器装载和实例化一个Servlet。创建出该Servlet类的一个实例。初始化在Servlet

    2022年10月4日
  • 新秀学习51供应链管理的—-模拟笔记本PC和51串行通讯1

    新秀学习51供应链管理的—-模拟笔记本PC和51串行通讯1

    2022年1月16日
  • html倒计时代码

    <SPANid=span_dt_dt></SPAN><SCRIPTlanguage=javascript><!–//document.write(“”);functionshow_date_time(){window.setTimeout(“show_date_time()”,1000);BirthDay=newDate(“…

    2022年4月8日
  • 头条社招Java岗位-面经

    头条社招Java岗位-面经

    2022年2月14日
  • linux 卸载cuda_如何卸载CUDA

    linux 卸载cuda_如何卸载CUDALinux下cuda卸载亲测好用#1.用runfile方式安装的删除方法:sudo/usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl#2.用packagemanager方式安装的删除方法:sudoapt-get–purgeremovecuda-8.0sudoaptautoremovesudoapt-getautoclean#cudnn文件和samples残留在/usr/local/cuda-8.0/,删除

    2022年9月6日
  • arm linux启动过程_项目冷启动和热启动的区别

    arm linux启动过程_项目冷启动和热启动的区别微处理器:LPC2114编译环境:KeilMDKV4.10思路:常把单片机系统的复位分为冷启动和热启动。所谓冷启动,也就是一般所说的上电复位,冷启动后片内外RAM的内容是随机的,通常是0x00或0xFF;单片机的热启动是通过外部电路给运行中的单片机的复位端一复位电平而实现的,也就是所说的按键复位或看门狗复位。复位后,RAM的内容都没有改变。在某些场合,必须区分出设备的重启是热重启还是冷重启。常…

    2022年10月30日

发表回复

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

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