Oracle读取库中表结构
admin
2023-05-12 14:22:07
0

(学习记录)

代码中Table类与Field类请参照:http://meijia.blog.51cto.com/8684191/1563874

可参考api调整相关参数。

(同样注意格式)


1. 方法如下

public List

export() {

        List

tableList = new ArrayList
();

        

            Connection conn = DBUtil.getConnection();

            ResultSet tableRs = null; // 存库元数据

            ResultSet colRs = null;//存储表元数据

        try {


            DatabaseMetaData dbmd = conn.getMetaData();//返回连接到的数据库此 Connection 对象所连接的数据库的元数据


            //获取所有表

            List tableNameList = new ArrayList();

            tableRs = dbmd.getTables(null, "%", "%", new String[]{"TABLE"}); //所有表

            while (tableRs.next()) {

                String tableName = tableRs.getString("TABLE_NAME");//表名

                tableNameList.add(tableName);

            }


            List fieldList = null;//存储每一个表的所有字段

            Table table = null;

            for (String name : tableNameList ) {

                table = new Table();

                //获取表的字段

                colRs = dbmd.getColumns(null, "%", name, "%");//当前表的字段

                Field field = null;

                fieldList = new ArrayList();

                while (colRs.next()) {

                    field = new Field();

                    String columnName = colRs.getString("COLUMN_NAME");//名称

                    String columnType = colRs.getString("TYPE_NAME");//类型

                    int datasize = colRs.getInt("COLUMN_SIZE");//字段长度

                    int digits = colRs.getInt("DECIMAL_DIGITS");

                    int nullable = colRs.getInt("NULLABLE");//返回1就表示可以是Null,而0就表示Not Null

                    field.setColumnName(columnName);

                    field.setTypeName(columnType);

                    field.setColumnSize(datasize);

                    field.setDecimal_digits(digits);

                    field.setNullable(nullable);


                    fieldList.add(field);

                }

                table.setTableName(name);

                table.setField(fieldList);

                tableList.add(table);

            }

        } catch (SQLException ex) {

            Logger.getLogger(ExportOracleTable.class.getName()).log(Level.SEVERE, null, ex);

        } finally {

            if(colRs != null) {

                try {

                    colRs.close();

                } catch (SQLException ex) {

                    Logger.getLogger(ExportOracleTable.class.getName()).log(Level.SEVERE, null, ex);

                }

            }

            if(tableRs != null) {

                try {

                    tableRs.close();

                } catch (SQLException ex) {

                    Logger.getLogger(ExportOracleTable.class.getName()).log(Level.SEVERE, null, ex);

                }

            }

            if(conn != null) {

                try {

                    conn.close();

                } catch (SQLException ex) {

                    Logger.getLogger(ExportOracleTable.class.getName()).log(Level.SEVERE, null, ex);

                }

            }

        }

        return tableList;

    }


相关内容

热门资讯

英国首相府任命新任卫生和社会福... △詹姆斯·默里(资料图)当地时间14日,英国首相府发表声明,宣布任命议员詹姆斯·默里为卫生和社会福利...
特斯拉FSD在德国柏林工厂“偷... 来源:市场资讯 (来源:IT之家) IT之家 5 月 14 日消息,特斯拉在一个尚未批准 FSD 上...
伟大的实验——相对论拼图 1905年,一个托了半天关系才终于找到一份体制内工作的物理学博士竟然对自己这份工作一点也不珍惜,上班...
凤凰女记者战地日记丨在忐忑中坚... 【编者按】这是凤凰卫视驻伊朗记者李睿的战地日记。她身处德黑兰,既是战争的亲历者,也是观察者。在她的日...
首届香港具身智能产业峰会举办 ... 来源:大湾区 5月12日,首届香港具身智能产业峰会12日在香港举办,活动汇聚香港政、产、学、研、商界...
创新成本做减法 产业生态做加法... 图片由AI生成 深圳新闻网2026年5月14日讯(深圳特区报记者 樊怡君)记者13日从最新一期市政府...
斯塔默对英国卫生和社会福利大臣... △英国首相斯塔默(资料图)当地时间14日,英国首相斯塔默致信卫生和社会福利大臣韦斯·斯特里廷,对其辞...
自己系的铃,自己来解 作者 | 雷墨编辑 | 阿树5月14日上午,中美两国元首举行了长达2小时15分钟的会谈。这是继201...
高校大门开放争议背后:一个人的... 5月13日,武汉大学宣布取消社会公众进校预约制度,公众凭身份证即可入校。这意味着学校自2023年7月...
三星承诺将打造更节能的智能家电... IT之家 5 月 14 日消息,据外媒 Sammobile 今日报道,三星签署了欧盟关于互操作性和能...