Oracle 查询数据库所有表
  2c4CAkOKqlqt 2023年12月05日 31 0

ArrayList alPass = new ArrayList<>();

try {

        // conn = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();
        Properties props = new Properties();
        props.put("remarksReporting", "true");
        props.put("user", "igadmin");
        props.put("password", "igadmin");
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:LNNX", props);
        //Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:LNNX?useInformationSchema=true","igadmin","igadmin");

        DatabaseMetaData metadata = conn.getMetaData();
        System.out.println("数据库已知的用户: " + metadata.getUserName());
        System.out.println("数据库的系统函数的逗号分隔列表: " + metadata.getSystemFunctions());
        System.out.println("数据库的时间和日期函数的逗号分隔列表: " + metadata.getTimeDateFunctions());
        System.out.println("数据库的字符串函数的逗号分隔列表: " + metadata.getStringFunctions());
        System.out.println("数据库供应商用于 'schema' 的首选术语: " + metadata.getSchemaTerm());
        System.out.println("数据库URL: " + metadata.getURL());
        System.out.println("是否允许只读:" + metadata.isReadOnly());
        System.out.println("数据库的产品名称:" + metadata.getDatabaseProductName());
        System.out.println("数据库的版本:" + metadata.getDatabaseProductVersion());
        System.out.println("驱动程序的名称:" + metadata.getDriverName());
        System.out.println("驱动程序的版本:" + metadata.getDriverVersion());

        System.out.println();
        System.out.println("数据库中使用的表类型");
        ResultSet rs = metadata.getTableTypes();
        while (rs.next()) {
            System.out.println(rs.getString(1));
        }
        rs.close();

        System.out.println();
        /**
         * 获取指定的数据库的所有表的类型,getTables()的第一个参数就是数据库名 因为与MySQL连接时没有指定,这里加上,剩下的参数就可以为null了
         * 第二个参数是模式名称的模式,但是输出也是什么都没有。谁知道告诉我一声
         */

        SingleTableBL singleTableBL = (SingleTableBL) WebApplicationSupport.getBean("singleTableBL");
        SingleTableAttributeBL singleTableAttributeBL = (SingleTableAttributeBL) WebApplicationSupport.getBean("singleTableAttributeBL");
        List<SingleTableInfo> singleTableInfoList = singleTableBL.searchSingleTable();
        for (int i = 0; i < singleTableInfoList.size(); i++) {
            SingleTableInfo singleTableInfo = singleTableInfoList.get(i);
            alPass.add(singleTableInfo.getStname());
        }
        System.out.println("获取指定的数据库的所有表的类型");
        ResultSet rs1 = metadata.getTables("IG", "IGADMIN", null, null);
        while (rs1.next()) {
            System.out.println("Table name: " + rs1.getString("Table_NAME"));
            System.out.println("Table type: " + rs1.getString("TABLE_TYPE"));
            System.out.println("Table schema: " + rs1.getString("TABLE_SCHEM"));
            System.out.println("Table catalog: " + rs1.getString("TABLE_CAT"));
            System.out.println("Table catalog: " + rs1.getString("REMARKS"));
            if (alPass.contains(rs1.getString(3))) {

            } else {
                if (rs1.getString(4).equals("TABLE")) {

                    if ("FRONT".equals(rs1.getString(3))) {
                        System.out.println("123");
                    }


                    String tablename = rs1.getString(3);
                    SingleTableTB singleTableTB = new SingleTableTB();
                    singleTableTB.setStname(tablename);
                    if (rs1.getString("REMARKS") != null && !rs1.getString("REMARKS").equals("null")) {
                        singleTableTB.setStdesc(rs1.getString("REMARKS"));
                    }
                    singleTableTB.setInitcreatetime(IGStringUtils.getCurrentDateTime());
                    singleTableTB.setLastupdatetime(IGStringUtils.getCurrentDateTime());
                    SingleTableInfo singleTableInfo = singleTableBL.registSingleTable(singleTableTB);

                    List<String> keyList = new ArrayList<String>();
                    ResultSet rs3 = metadata.getPrimaryKeys("stock", null, tablename);
                    while (rs3.next()) {
                        keyList.add(rs3.getString(4));
                    }
                    rs3.close();

                    PreparedStatement ps = conn.prepareStatement("select * from " + tablename);
                    ResultSet rs2 = ps.executeQuery();
                    ResultSetMetaData rsme = rs2.getMetaData();

                    int columnCount = rsme.getColumnCount();
                    //System.out.println("ResultSet对象中的列数" + columnCount);
                    System.out.println("列定义  | 自动编号 | 是否为空  | 主键 ");
                    for (int i = 1; i < columnCount; i++) {
                        System.out.print(rsme.getColumnName(i) + " " + rsme.getColumnTypeName(i) + "("
                                + rsme.getPrecision(i) + ")");
                        System.out.print("| " + rsme.isAutoIncrement(i));
                        System.out.print("| " + rsme.isNullable(i));
                        System.out.println("| " + keyList.contains(rsme.getColumnName(i)));

                        SingleTableAttributeTB singleTableAttributeTB = new SingleTableAttributeTB();
                        singleTableAttributeTB.setStid(singleTableInfo.getStid());
                        singleTableAttributeTB.setStaname(rsme.getColumnName(i));
                        singleTableAttributeTB.setStadesc(rsme.getColumnName(i));
                        if (rsme.getColumnTypeName(i).contains("NUMBER")) {
                            singleTableAttributeTB.setStatype("1");
                        } else {
                            singleTableAttributeTB.setStatype("0");
                        }
                        singleTableAttributeTB.setStakey(rsme.getColumnName(i));
                        singleTableAttributeTB.setStalength(String.valueOf(rsme.getPrecision(i)));
                        if (rsme.isNullable(i) == 0) {
                            singleTableAttributeTB.setStaempty("0");
                        } else {
                            singleTableAttributeTB.setStaempty("1");
                        }
                        if (keyList.contains(rsme.getColumnName(i))) {
                            singleTableAttributeTB.setStaprimkey("1");
                        } else {
                            singleTableAttributeTB.setStaprimkey("0");
                        }
                        singleTableAttributeTB.setInitcreatetime(IGStringUtils.getCurrentDateTime());
                        singleTableAttributeTB.setLastupdatetime(IGStringUtils.getCurrentDateTime());
                        singleTableAttributeBL.registSingleTableAttribute(singleTableAttributeTB);


                    }
                    System.out.println();
                    rs2.close();
                    ps.close();
                    alPass.add(rs1.getString(3));
                }
            }
            System.out.println(alPass.size());
        }
        rs1.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("================================================================");
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月05日 0

暂无评论

推荐阅读
2c4CAkOKqlqt