MetaData와 만능테이블 보이기 카테고리 없음2010. 1. 11. 19:44
1. ResultSetMetaData를 이용하여 만능테이블을 만들어 보자.
우선 index.jsp에서
SELECT * FROM TAB
을 이용하여 모든 테이블을 출력한다.
모든 테이블에 각각 ANCHOR를 둬서
누르면 list.jsp?table=테이블 이름
이 list.jsp로 전달되도록 한다.
2. list.jsp에서
String table=request.getParameter("table");
로 테이블이름을 받아서
"SELECT * FROM "+table
로 그 테이블을 내용을 모두 가져오도록 한다.
//------------------------- index.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.ResultSetMetaData"%>
<% request.setCharacterEncoding("euc-kr");%>
<% response.setContentType("text/html; charset=euc-kr");%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>All Employees</title>
</head>
<body>
<h3>SELECT * FROM TAB </h3><br/>
<a href='index.jsp'>Home</a><br/>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String user="hr";
String pwd="oracle";
Connection conn=DriverManager.getConnection(url,user,pwd);
String sql="SELECT * FROM TAB ";
PreparedStatement psmt=conn.prepareStatement(sql);
ResultSet rs=psmt.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
int count=rsmd.getColumnCount();
%>
<table border='1' WIDTH='90%'>
<tr bgcolor='#8080ff'>
<%
for(int i=1; i<=count; i++){
%>
<td><%=rsmd.getColumnName(i) %></td>
<%
}
%>
</tr>
<tr bgcolor='#984554'>
<%
for(int i=1; i<=count; i++){
%>
<td><%=rsmd.getColumnTypeName(i) %></td>
<%
}
%>
</tr>
<%
while(rs.next()){
%>
<tr bgcolor='#ffee33'>
<%
for(int i=1; i<=count; i++){
//tab에서 가장 앞에 것만 테이블 이름을 보인다.
if(i==1){
%>
<td> <a href='list.jsp?table=<%=rs.getString(i)%>'><%=rs.getString(i)%></a> </td>
<%
}else{
%>
<td><%=rs.getString(i)%> </td>
<%
}
}
%>
</tr>
<%
}
if(rs!=null)rs.close();
if(psmt!=null)psmt.close();
if(conn!=null)conn.close();
%>
</table>
<a href='index.jsp'>Home</a><br/>
</body>
</html>
//------------------------- list.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.ResultSetMetaData"%>
<% request.setCharacterEncoding("euc-kr");%>
<% response.setContentType("text/html; charset=euc-kr");%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.sql.Types"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>All Employees</title>
</head>
<body>
<%!
//년-월-일 형식으로 출력
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
%>
<%
String table=request.getParameter("table");
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String user="hr";
String pwd="oracle";
Connection conn=DriverManager.getConnection(url,user,pwd);
//만능 테이블 보이기
String sql="SELECT * FROM "+(table==null?" TAB":table);
PreparedStatement psmt=conn.prepareStatement(sql);
ResultSet rs=psmt.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
int count=rsmd.getColumnCount();
%>
<h3>SELECT * FROM <%=table%> </h3><br/>
<a href='index.jsp'>Home</a><br/>
<table border='1' WIDTH='90%'>
<tr bgcolor='#8080ff'>
<%
for(int i=1; i<=count; i++){
%>
<td><%=rsmd.getColumnName(i) %></td>
<%
}
%>
</tr>
<tr bgcolor='#984554'>
<%
for(int i=1; i<=count; i++){
%>
<td><%=rsmd.getColumnTypeName(i) %></td>
<%
}
%>
</tr>
<%
while(rs.next()){
%>
<tr bgcolor='#ffff33'>
<%
for(int i=1; i<=count; i++){
//데이트 형일때만 년-월-일 형식으로 변환하여 보이기
if(rsmd.getColumnType(i)==Types.DATE){
%>
<td><%=sdf.format(rs.getDate(i)) %></td>
<%
}else{
%>
<td><%=rs.getString(i) %></td>
<%
}
}
%>
</tr>
<%
}
if(rs!=null)rs.close();
if(psmt!=null)psmt.close();
if(conn!=null)conn.close();
%>
</table>
<a href='index.jsp'>Home</a><br/>
</body>
</html>
[출처] MetaData와 만능테이블 보이기|작성자 자바자바