2012-12-03 33 views
0

我有以下代码来检索从Oracle表数据。这工作正常。检索从表中的数据为动态jsp中

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@include file="DBCon.jsp" %> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body><table> 
     <% 
     String a=request.getParameter("type").trim(); 
     String b=request.getParameter("user").trim(); 
     String c=request.getParameter("from").trim(); 
     String d=request.getParameter("to").trim(); 
     ResultSetMetaData rsmd; 
     String st="SELECT type, Hari, Rakesh, Total FROM (select (type), max(decode(SPECIALIST, 'Hari', cnt, null)) Hari, max(decode(SPECIALIST, 'Rakesh', cnt, null)) Rakesh, Sum(cnt) total from (select (type),specialist, sum(update_count) cnt from scope1 where (RECVD_DATE >='"+c+"' and RECVD_DATE <='"+d+"') group by (type),specialist) q group by (type) Union Select 'Total' as type, Sum(Hari) Hari,Sum(Rakesh) Rakesh,Sum(total) Total from ( select (type), max(decode(SPECIALIST, 'Hari', cnt, null)) Hari, max(decode(SPECIALIST, 'Rakesh', cnt, null)) Rakesh, Sum(cnt) total from (select (type),specialist, sum(update_count) cnt from scope1 where (RECVD_DATE >='"+c+"' and RECVD_DATE <='"+d+"') group by (type),specialist) q group by (type) )a) b Order by Total";   
try{%> 
     <tr><b><%=b%></b></tr><% 
      //String sql=(st); 
      //out.print(sql); 
      ps1=con.prepareStatement(st); 
      rs1=ps1.executeQuery(); 
      rsmd=rs1.getMetaData(); 
      int cou=rsmd.getColumnCount(); 
      for(int i=1;i<cou;i++){ 
      %> 
     <td><%=rsmd.getColumnName(i)%> 
     <% 
        } 
      %> 
     <td>Total</td> 
     <% 
      while(rs1.next()) 
      { 
      %> 

      <tr><td><b><%=rs1.getString(1)%></b></td><td><%=rs1.getString(2)%></td><td><%=rs1.getString(3)%></td><td><%=rs1.getString(4)%> </td></tr> 
      <% 
      } 
     } 
     catch(Exception e) 
     { 
      out.println(e); 
} 
%> 
    </table> </body> 
</html> 

但在这里,我想从你们帮助,我可以做出以下声明动态。

<tr><td><b><%=rs1.getString(1)%></b></td><td><%=rs1.getString(2)%></td><td><%=rs1.getString(3)%></td><td><%=rs1.getString(4)%> </td></tr> 

这里使用的sql语句如下。

SELECT type, Hari, Rakesh, Total FROM (select (type), max(decode(SPECIALIST, 'Hari', cnt, null)) Hari, max(decode(SPECIALIST, 'Rakesh', cnt, null)) Rakesh, Sum(cnt) total from (select (type),specialist, sum(update_count) cnt from scope1 where (RECVD_DATE >='"+c+"' and RECVD_DATE <='"+d+"') group by (type),specialist) q group by (type) Union Select 'Total' as type, Sum(Hari) Hari,Sum(Rakesh) Rakesh,Sum(total) Total from ( select (type), max(decode(SPECIALIST, 'Hari', cnt, null)) Hari, max(decode(SPECIALIST, 'Rakesh', cnt, null)) Rakesh, Sum(cnt) total from (select (type),specialist, sum(update_count) cnt from scope1 where (RECVD_DATE >='"+c+"' and RECVD_DATE <='"+d+"') group by (type),specialist) q group by (type) )a) b Order by Total 

我想在

<%=rs1.getString(i)%> 

感谢

回答

1
<% 
for (int i = 1; i < 5; i++) { 
%> 

<td><%= rs1.getString(i) %></td> 

<% 
} 
%> 

卜要检索的数据一样东西我永远不会是这样做的。 JSP不应该使用scriptlet。他们不应该执行数据库查询。他们唯一的工作应该是使用存储在请求属性中的对象来生成HTML标记。

SQL查询应该是您的首选MVC框架的servlet或动作。这个servlet将获取数据,将其存储在List<MyObject>中,将此列表放入请求属性中,并转发给JSP。

然后,JSP将使用JSTL和JSP EL(以及其他自定义标记,如果需要的话),以便显示此List<MyObject>