수업 문제(국비 지원)/JSP
[JSP] 2022.09.28(출력 프로그램 만들기)
byeolsub
2023. 4. 29. 21:58
❓ 출력 프로그램 만들기
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSetMetaData"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>간단한 select 구문 실행 결과 확인</title>
<link rel="stylesheet" href="../css/main.css">
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String sql = request.getParameter("sql");
%>
<form method="post">
<textarea cols="60" rows="5" name="sql"><%=(sql==null)?"":sql %></textarea>
<input type="submit" value="실행" >
</form>
<%
Connection conn = null;
if(sql != null && !sql.trim().equals("")) { //입력된 구문이 존재.
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:xe","kic","1234");
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery(); //입력한 sql문장 실행
ResultSetMetaData rsmt = rs.getMetaData();
//sql : select * from emp
// select count(*) from (select * from emp) a
PreparedStatement pstmt2 =
conn.prepareStatement("select count(*) from (" + sql + ") a");
ResultSet rs2 = pstmt2.executeQuery(); // sql 구문을 실행한경우 조회되는 레코드 건수
rs2.next();
int cnt = rs2.getInt(1); //첫번째 컬럼(count(*))의 값
%>
<table>
<tr><td colspan="<%=rsmt.getColumnCount()%>"
style="text-align: right;">
조회된 레코드 갯수:<%=cnt %></td></tr>
<tr>
<% //조회된 컬럼명 출력
for(int i=1;i<=rsmt.getColumnCount();i++) {%>
<th><%=rsmt.getColumnName(i)%></th>
<% } %>
</tr>
<tr>
<% //조회된 컬럼명 출력
// for(int i=1;i<=rsmt.getColumnCount();i++) {
// out.println("<th>"+rsmt.getColumnName(i)+ "</th>");
//} %>
</tr>
<% //데이터 출력
while(rs.next()) { %><tr>
<% for(int i=1;i<=rsmt.getColumnCount();i++) {%>
<td><%=rs.getString(i) %></td><% } %>
<% }%></tr>
</table>
<% } catch (Exception e) { %>
<h1>sql 구문 오류 입니다.<br>
<%=e.getMessage() %><br>
sql 구문 :<%=sql%> </h1>
<% } finally {
conn.close();
}
}%>
</body>
</html>