溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle讀取庫中表結(jié)構(gòu)

發(fā)布時間:2020-06-08 17:04:53 來源:網(wǎng)絡(luò) 閱讀:465 作者:但丁丶2P丶M 欄目:關(guān)系型數(shù)據(jù)庫

(學(xué)習(xí)記錄)

代碼中Table類與Field類請參照:http://meijia.blog.51cto.com/8684191/1563874

可參考api調(diào)整相關(guān)參數(shù)。

(同樣注意格式)


1. 方法如下

public List<Table> export() {

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

        

            Connection conn = DBUtil.getConnection();

            ResultSet tableRs = null; // 存庫元數(shù)據(jù)

            ResultSet colRs = null;//存儲表元數(shù)據(jù)

        try {


            DatabaseMetaData dbmd = conn.getMetaData();//返回連接到的數(shù)據(jù)庫此 Connection 對象所連接的數(shù)據(jù)庫的元數(shù)據(jù)


            //獲取所有表

            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, "%");//當(dāng)前表的字段

                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;

    }


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI