通过sql语句查询表的列和对应的数据并在jsp页面上显示

<%@ 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>

显示效果如图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值