Есть ли хороший способ получить данные без rs.getString и сохранить в формате .xls или .csv? - PullRequest
0 голосов
/ 25 июня 2018

Я работаю над одним приложением, где я хочу скачать таблицу в формате .xls, Таблица загружается в формате .xls, но я должен дать имя столбца в состоянии while (rs.next ()), которое я не хочу, я хотите без указания имени столбца данные должны скачать базу на st.executeQuery (); там в любом случае? здесь я вставляю свой код

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<!DOCTYPE html>
<html>
    <head>
        <title>JSP Page</title>
    </head>
    <body>
        <form method="post" action="Download_excel.jsp">
          <table border="1">
              <tr>
                  <td>FILE_NAME</td>
                  <td>FILE_UPLOAD_DATE</td>
                  <td>POLICY_NO</td>
                  <td> ENDORSEMENT_NO</td>
                  <td> GP_EBAO</td>
                  <td> TOL_PRM</td>
                  <td> PRODUCT_NAME</td>
                  <td> POLICY_NUMBER</td>
                  <td> GP_OF</td>
                  <td>DIFF</td>

              </tr>
              <%


                  String txtfilename=request.getParameter("txtfilename");
                  String btnsubmit=request.getParameter("btnsubmit");
                     if(txtfilename==null ||txtfilename.trim().isEmpty())
       {
           out.println("<html><body><script type=\"text/javascript\">"); 
            out.println("confirm('first name field cannot be blank');"); 
            out.println("location='xlsUpload.html';");
            out.println("</script></body></html>"); 

       }
                     else
                          if(btnsubmit!=null)
                          {

                               response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename="+txtfilename+".xls");
              Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@172.18.115.213:1821:db","xe","se");
        Statement st=con.createStatement();
        ResultSet rs=st.executeQuery("select * from DYNAMIC_INSERT where file_name='"+txtfilename+"'");

        while(rs.next())
        {


              %>
              <tr>

                  <td><%=rs.getString("FILE_NAME")%></td>


              <td><%=rs.getString("FILE_UPLOAD_DATE")%></td>

                  <td><%=rs.getString("POLICY_NO")%></td>

                  <td><%=rs.getString("ENDORSEMENT_NO")%></td>

                  <td><%=rs.getString("GP_EBAO")%></td>

                  <td><%=rs.getString("TOL_PRM")%></td>

                  <td><%=rs.getString("PRODUCT_NAME")%></td>

                  <td><%=rs.getString("POLICY_NUMBER")%></td>
                         <td><%=rs.getString("GP_OF")%></td>
                         <td><%=rs.getString("DIFF")%></td>
              </tr>

              <%
              }
}
              %>
          </table>
        </form>
    </body>
</html>

Здесь я попробовал приведенный ниже код, но получить только имена столбцов, а не данные

 ResultSetMetaData rsmd = rs.getMetaData();

        int numOfCols = rsmd.getColumnCount();

        for(int i = 1; i <= numOfCols; i++)
        {
        %>
        <tr>
        <td>
           <%=rsmd.getColumnName(i))%>;
            </td>
            </tr>

        <%  
        }
        %>

1 Ответ

0 голосов
/ 22 августа 2018

Да, вы можете.Вы уже на полпути.
Вы можете использовать ResultSetMetaData для этого.

А затем вызвать rs.getString, передавая индекс столбца.Смотрите -> https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getString(int)

ResultSetMetaData rsmd = rs.getMetaData();
int numOfCols = rsmd.getColumnCount();
while(rs.next()) {
  for(int i = 1; i <= numOfCols; i++) {
    <%=rs.getString(i)%>
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...