<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的空間,寫我所寫,禪我所藏

    與我一起遨游吧

     

    使用Jakarta POI EXCEL API自動生成ORACLE數據字典的源代碼

    使用Jakarta POI EXCEL API自動生成ORACLE數據字典的源代碼


    在項目的開發過程中,數據字典的維護是一件煩瑣的事情.所以我寫了一段代碼來自動生成數據字典. 其中用到Jakarta POI,這是一個用于訪問Microsoft Format Files的開源項目,詳細信息請看這里. http://jakarta.apache.org/poi/index.html 下面是程序的源代碼及說明


    在項目的開發過程中,數據字典的維護是一件煩瑣的事情.所以我寫了一段代碼來自動生成數據字典.
    其中用到Jakarta POI,這是一個用于訪問Microsoft Format Files的開源項目,詳細信息請看這里.
    http://jakarta.apache.org/poi/index.html
    下面是程序的源代碼及說明

    import java.io.*;
    import java.sql.*;
    import org.apache.poi.hssf.usermodel.*;

    public class AppMain {
      public AppMain() {
      }

      public static void main(String[] args) {
        try {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet =null;

          /**連接ORACLE的數據庫,關鍵在于兩個系統級的VIEW:
            all_tab_columns 記錄著ORACLE所有的字段定義信息.
            DBA_COL_COMMENTS 記錄著字段的注釋信息,*/


            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection(
                "jdbc:oracle:thin:@127.0.0.1:1521:ORACLE", "用戶名",   "密碼");
            Statement stmt = con.createStatement();
            StringBuffer strbuf = new StringBuffer();
            strbuf.append("SELECT A.*,B.comments");
            strbuf.append(" FROM all_tab_columns A,DBA_COL_COMMENTS B");
            strbuf.append(" WHERE A.owner=B.owner");
            strbuf.append(" AND A.table_name=B.table_name");
            strbuf.append(" AND A.COLUMN_NAME=B.COLUMN_NAME");
            //owner是建立表的用戶名
            strbuf.append(" AND A.owner=myuser");
            strbuf.append(" ORDER BY A.TABLE_NAME");
            ResultSet rs = stmt.executeQuery(strbuf.toString());

            String tb = "";
            int k = 0;
            while (rs.next()) {
                //對每個表生成一個新的sheet,并以表名命名
              if (!tb.equals(rs.getString("TABLE_NAME"))) {
                sheet = wb.createSheet(rs.getString("TABLE_NAME"));
                //設置表頭的說明
                HSSFRow row = sheet.createRow(0);
                setCellGBKValue(row.createCell((short) 0),"字段名");
                setCellGBKValue(row.createCell((short) 1),"字段類型");
                setCellGBKValue(row.createCell((short) 2),"字段長度");
                setCellGBKValue(row.createCell((short) 3),"數字長度");
                setCellGBKValue(row.createCell((short) 4),"小數位數");
                setCellGBKValue(row.createCell((short) 5),"能否為NULL");
                setCellGBKValue(row.createCell((short) 6),"字段說明");
                k = 1;
              } else {
                k++;
              }
              tb = rs.getString("TABLE_NAME");
              HSSFRow row = sheet.createRow(k);
              row.createCell((short) 0).setCellValue(rs.getString(
                    "COLUMN_NAME"));
              row.createCell((short) 1).setCellValue(rs.getString("DATA_TYPE"));
              row.createCell((short) 2).setCellValue(rs.getString(
                    "DATA_LENGTH"));
              row.createCell((short) 3).setCellValue(rs.getString(
                    "DATA_PRECISION"));
              row.createCell((short) 4).setCellValue(rs.getString(
                    "DATA_SCALE"));
              row.createCell((short) 5).setCellValue(rs.getString("NULLABLE"));
              setCellGBKValue(row.createCell((short) 6),rs.getString("COMMENTS"));

            }

            //把生成的EXCEL文件輸出保存
            FileOutputStream fileOut = new FileOutputStream("F:\\數據字典.xls");
            wb.write(fileOut);
            fileOut.close();

            rs.close();
            stmt.close();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
      }

            /**

              這個函數是為了設置一個CELL為中文字符串

            */

      private static void setCellGBKValue(HSSFCell cell, String value) {
        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
          //設置CELL的編碼信息
        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellValue(value);
      }
    }


    這樣運行這段代碼后,就會生成一個數據字典.如果需要,可以對選擇的信息做修改,
    只需要修改相關的對ORACLE系統表或者視圖的SELECT語句即可.

    posted on 2007-06-26 10:57 imcb 閱讀(784) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产a∨无码中文777| 亚洲精品你懂的在线观看| 亚洲精品国产国语| 美丽的姑娘免费观看在线播放| 亚洲第一极品精品无码久久| 国产性生大片免费观看性 | 亚洲综合成人婷婷五月网址| 最近中文字幕无吗免费高清| 免费国产成人α片| 亚洲AV无码成人专区片在线观看| 亚洲综合偷自成人网第页色| 无码日韩人妻av一区免费| 最新亚洲成av人免费看| 2020亚洲男人天堂精品| 成人奭片免费观看| 欧美亚洲精品一区二区| 亚洲国产高清精品线久久| 51午夜精品免费视频| 久久亚洲国产精品一区二区| 亚洲电影在线免费观看| 亚洲精品成a人在线观看☆| 免费永久国产在线视频| jizz在线免费播放| 久久精品国产亚洲夜色AV网站| 五月亭亭免费高清在线| 亚洲国产成人无码AV在线影院| 亚洲欧洲国产成人综合在线观看 | 国产成人亚洲综合无| 亚洲综合国产精品第一页| 免费成人在线电影| 亚洲人成色4444在线观看| 国产精品亚洲二区在线观看| 亚洲一区二区在线免费观看| 中文字幕亚洲码在线| 亚洲美女高清一区二区三区| 精品无码无人网站免费视频| 亚洲精品宾馆在线精品酒店| 亚洲精品无码高潮喷水在线| 欧美最猛性xxxxx免费| www免费黄色网| 自拍日韩亚洲一区在线|