0

Oracle テーブルからデータを取得するための以下のコードがあります。これは正常に機能しています。

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

ありがとう

4

1 に答える 1

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

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

<%
}
%>

しかし、私はこのようなことは決してしません。JSP はスクリプトレットを使用しないでください。また、データベース クエリを実行するべきではありません。彼らの唯一の仕事は、リクエスト属性に格納されたオブジェクトを使用して HTML マークアップを生成することです。

SQL クエリは、お好みの MVC フレームワークのサーブレットまたはアクションに含まれている必要があります。このサーブレットは、データを取得して に格納し、List<MyObject>このリストをリクエスト属性に入れ、JSP に転送します。

JSP は、このList<MyObject>.

于 2012-12-03T12:47:50.497 に答える