2010. 11. 19. 18:20
반응형

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="oracle.jdbc.driver.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<%
/*
 response.setContentType("application/vnd.ms-excel; charset=euc-kr");
 request.setCharacterEncoding("euc-kr");
 response.setHeader("Cache-Control", "no-cache");
 response.setHeader("Content-Disposition", "attachment;filename=table.xls");
 response.setHeader("Content-Description", "JSP Generated Data");
 */
%>
<%!
 public String isnull(String str) {
  if (str == null) return " ";
  return str;
 }
%>

<html>
<head>
 <title>테이블명세서</title>
 <style type='text/css'>
  td {font-size:12px; text-align:center;}
  .header {font-weight:bold; background:#ddd}
 </style>
</head>
<body>
 <table border='1' cellspacing='0'>
<%

try {
 Connection conDs  = null;
 Statement stmt   = null;
 Statement stmt2  = null;
 ResultSet rs   = null;
 String query   = new String();
 String querysub  = new String();

 Class.forName("oracle.jdbc.driver.OracleDriver");
 Connection conn = null;
 conDs  = DriverManager.getConnection("jdbc:oracle:thin:@000.000.000.:1521:aaaaa", "bbbbb", "ccccc");
 
 stmt  = conDs.createStatement();
 stmt2  = conDs.createStatement();

 query = " SELECT NVL (a.tname, ' ') tname, NVL (b.comments, ' ') comments, "
    + "        NVL (b.owner, ' ') owner "
    + "   FROM tab a, all_tab_comments b "
    + "  WHERE a.tname = b.table_name "
    + "    AND (b.table_name like 'T~_%' ESCAPE '~' or b.table_name like 'W~_%' ESCAPE '~') ";
 System.out.println(query);
 rs  = stmt.executeQuery(query);
 ResultSet rssub = null;

 while (rs.next()) {
  querysub = " SELECT cname, coltype, length, nulls, pk, defaultval, comments FROM ( "
     + " SELECT b.cname, a.comments, b.colno, b.coltype, b.width, b.scale, b.precision, "
     + "         b.nulls, b.defaultval, "
     + "         (CASE "
     + "             WHEN b.coltype = 'NUMBER' "
     + "                THEN b.scale + b.PRECISION "
     + "             ELSE width "
     + "          END "
     + "         ) length, "
     + "         (CASE "
     + "             WHEN b.colno IN ( "
     + "                    SELECT s2.POSITION "
     + "                      FROM all_constraints s1, all_cons_columns s2 "
     + "                     WHERE s1.table_name = b.tname "
     + "                       AND s1.constraint_type = 'P' "
     + "                       AND s1.table_name = s2.table_name "
     + "                       AND s1.constraint_name = s2.constraint_name) "
     + "                THEN 'PK' "
     + "             ELSE ' ' "
     + "          END "
     + "         ) pk "
     + "    FROM SYS.all_col_comments a, col b "
     + "   WHERE a.table_name = b.tname "
     + "     AND a.column_name = b.cname "
     + "     AND a.table_name = '"+rs.getString(1)+"' )";
  rssub  = stmt2.executeQuery(querysub);
  int intCnt  = 0;
  while(rssub.next()) {
   if(intCnt == 0 || intCnt%25 == 0) {
    if(intCnt > 0) {
    %>
  <tr height="40">
   <td colspan="8"></td>
  </tr>
    <%}%>

  <tr>
   <td colspan="2">테이블 정보</td>
   <td colspan="6"><%=isnull(rs.getString("tname"))%></td>
  </tr>
  <tr>
   <td colspan="2">테이블 설명</td>
   <td colspan="6"><%=isnull(rs.getString("comments"))%></td>
  </tr>
  <tr>
   <td class='header'>번호 </td>
   <td class='header'>컬럼명</td>
   <td class='header'>데이터 타입</td>
   <td class='header'>Length</td>
   <td class='header'>널</td>
   <td class='header'>키</td>
   <td class='header'>기본값</td>
   <td class='header'>설명</td>
  </tr>
  <% }
   intCnt = intCnt + 1;
  %>

  <tr>
   <td><%=intCnt%></td>
   <td><%=isnull(rssub.getString(1))%></td>
   <td><%=isnull(rssub.getString(2))%></td>
   <td><%=isnull(rssub.getString(3))%></td>
   <td><%=isnull(rssub.getString(4))%></td>
   <td><%=isnull(rssub.getString(5))%></td>
   <td><%=isnull(rssub.getString(6))%></td>
   <td><%=isnull(rssub.getString(7))%></td>
  </tr>

 <% }
  rssub.close();
 %>

  <tr height="40">
   <td colspan="8"></td>
  </tr>

<%
 }
} catch (Exception e) {
 e.printStackTrace();
} finally {
 if (stmt != null)  try {stmt.close();}  catch(Exception e) {}
 if (conDs != null)  try {conDs.close();} catch(Exception e) {}
}
%>

 </table>
</body>
</html>

 

반응형

'Project' 카테고리의 다른 글

cvs 사용자 추가  (0) 2011.03.10
프로젝트 진행 사전 정보  (1) 2011.01.10
erwin script 모음  (3) 2010.11.19
java coding conventions  (1) 2010.04.09
프로젝트 관리용 FileCheck  (3) 2010.04.07
Posted by seongsland