<%@ page language="java" import="java.util.*, java.sql.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>动态列</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<form action="">
<textarea name=sql cols=80 rows=10>${param.sql}</textarea><br>
<input type=submit value=查询>
</form>
<c:if test="${!empty param.sql}">
<%
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XFSM", "xfsm", "merit");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(request.getParameter("sql"));
if(rs == null) {
stmt.close();
conn.close();
return;
}
// 取列名
ResultSetMetaData meta = rs.getMetaData();
int cols = meta.getColumnCount();
ArrayList colNames = new ArrayList();
for(int i = 1; i <= cols; i++) {
colNames.add(meta.getColumnLabel(i));
}
request.setAttribute("colNames", colNames);
%>
<table border="1" cellpadding="0" style="border-collapse: collapse; " width="100%" bordercolor="#000000" align=center >
<tr>
<c:forEach items="${colNames}" var="c">
<td>${c}</td>
</c:forEach>
</tr>
<%
while(rs.next()) {
colNames.clear();
for(int i = 1; i <= cols; i++) {
Object value = rs.getObject(i);
colNames.add(value);
}
request.setAttribute("colNames", colNames);
%>
<tr>
<c:forEach items="${colNames}" var="c">
<td>${c}</td>
</c:forEach>
</tr>
<%
}
rs.close();
stmt.close();
conn.close();
%>
</table>
</c:if>
</body>
</html>
显示效果如图: