zoukankan      html  css  js  c++  java
  • java 通过数据库名获得 该数据所有的表名以及字段名、字段类型

    package com.nf.lc.sql_meta_data;
    
    import java.sql.*;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    /**
     * 获得数据库表的元数据
     */
    public class GetSQLMetaData {
    
        public static void main(String[] args) throws SQLException, ClassNotFoundException {
    
            HashMap<String, Object> computer_mall = (HashMap<String, Object>) getDatabaseNameToTableNameAndColumnName("computer_mall");
    
            Set<String> tableNames = computer_mall.keySet();
            System.out.println("一共有表:" + tableNames.size() + "张");
            for (String tableName : tableNames) {
                System.out.println("===========================
    ");
                System.out.println("表名:" + tableName);
    
                // <字段名,类型>  HashMap 集合
                HashMap<String, String> columnNames = (HashMap<String, String>) computer_mall.get(tableName);
    
                Set<String> columns = columnNames.keySet();
    
                for (String column : columns) {
                    System.out.println("字段名:" + column + " 类型:" + columnNames.get(column));
                }
    
                System.out.println("===========================
    ");
            }
    
    
        }
    
        public static Map getDatabaseNameToTableNameAndColumnName(String databaseName) throws SQLException, ClassNotFoundException {
    
            String driver = "org.mariadb.jdbc.Driver";
            String url = "jdbc:mariadb://localhost:3306/" + databaseName;
            String username = "root";
            String password = "root";
            Map<String, Object> tableNameMap = new HashMap<>();
    
    
            //加载驱动
            Class.forName(driver);
    
            //获得数据库连接
            Connection connection = DriverManager.getConnection(url, username, password);
            //获得元数据
            DatabaseMetaData metaData = connection.getMetaData();
            //获得表信息
            ResultSet tables = metaData.getTables(null, null, null, new String[]{"TABLE"});
    
            while (tables.next()) {
                Map<String, String> columnNameMap = new HashMap<>(); //保存字段名
    
                //获得表名
                String table_name = tables.getString("TABLE_NAME");
                //通过表名获得所有字段名
                ResultSet columns = metaData.getColumns(null, null, table_name, "%");
                //获得所有字段名
                while (columns.next()) {
                    //获得字段名
                    String column_name = columns.getString("COLUMN_NAME");
                    //获得字段类型
                    String type_name = columns.getString("TYPE_NAME");
    
                    columnNameMap.put(column_name, type_name);
                }
    
                tableNameMap.put(table_name, columnNameMap);
    
            }
    
            return tableNameMap;
        }
    
    
    }

     关于获得数据库相关信息:

           String driver = "org.mariadb.jdbc.Driver";
            String url = "jdbc:mariadb://localhost:3306/" + databaseName;
            String username = "root";
            String password = "root";
    
            //加载驱动
            Class.forName(driver);
    
            //获得数据库连接
            Connection connection = DriverManager.getConnection(url, username, password);
            //获得元数据
            DatabaseMetaData metaData = connection.getMetaData();
            
            //获得数据库名称
            String databaseProductName = metaData.getDatabaseProductName();
    
            //获得数据库版本号
            String databaseProductVersion = metaData.getDatabaseProductVersion();
    
            //获得数据库用户名
            String userName = metaData.getUserName();
    
            //获得数据库连接URL
            String jdbcUrl = metaData.getURL();
    
            //获得数据库驱动
            String driverName = metaData.getDriverName();
    
            //获得数据库驱动版本号
            String driverVersion = metaData.getDriverVersion();

    归途(LC)

  • 相关阅读:
    学习攻略丨如何进阶为一名Web安全高手?
    审计篇丨PHPcms9.6.3后台XSS审计
    新手篇丨Python任意网段Web端口信息探测工具
    ZZZPHP1.61 代码审计-从SQL注入到Getshell
    FOFA爬虫大法——API的简单利用
    菜鸟如何反转到资深Web安全工程师
    实战经验丨CTF中文件包含的技巧总结
    一名合格的Web安全工程师之成长路径
    CTF丨2019互联网安全城市巡回赛·西安站,我们来了!
    暖春许愿季丨i春秋给你送福利
  • 原文地址:https://www.cnblogs.com/ldl326308/p/10279162.html
Copyright © 2011-2022 走看看