文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Oracle读取库中表结构

2024-04-02 19:55

关注

(学习记录)

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

可参考api调整相关参数。

(同样注意格式)


1. 方法如下

public List<Table> export() {

        List<Table> tableList = new ArrayList<Table>();

        

            Connection conn = DBUtil.getConnection();

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

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

        try {


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


            //获取所有表

            List<String> tableNameList = new ArrayList<String>();

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

            while (tableRs.next()) {

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

                tableNameList.add(tableName);

            }


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

            Table table = null;

            for (String name : tableNameList ) {

                table = new Table();

                //获取表的字段

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

                Field field = null;

                fieldList = new ArrayList<Field>();

                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;

    }


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯