【问题标题】:Display column names and records from table in a JSP Page在 JSP 页面中显示表中的列名和记录
【发布时间】:2020-09-28 00:08:40
【问题描述】:

我知道这个问题可能会以多种不同的方式提出,但我有点卡在无法将列名与记录一起显示的代码中。我正在显示记录,但没有显示列名。任何帮助表示赞赏,到目前为止我的代码如下 -

resultSet = statement.executeQuery(sql);
			ResultSetMetaData metadata = resultSet.getMetaData();
			int count = metadata.getColumnCount();
			
		while(resultSet.next())
		{
		%>
		<tr>
		<%
		ArrayList<String> columns = new ArrayList<>();
		for(int i=1; i<=count;i++)
			{ 
		     String name = metadata.getColumnName(i);
			 columns.add(name);
			  %>
				<td>
				<%= resultSet.getString(i)%>
				
                </td>
                <% 
             }
                %>                   
             </tr>
        
		<%
		}
		
		connection.close();
		} catch (Exception e) {
		e.printStackTrace();
		}
		%>
		</table>
		</body>
		</html>		

带有@swati 建议的修改代码。我在尝试之前添加了表格,并在尝试中包含了数组和 for 循环。这是抛出语法和构造函数错误

<table style="width:100%;text-align:left;border-collapse:collapse;background-color:gold;" border="2" bordercolor="Blue">
		<tr style="background-color:yellowgreen;color:white;">
		</tr>
		<%
		try{
			Connection connection = null;
			ResultSet resultSet = null;
			int counter=1;
			Class.forName("oracle.jdbc.driver.OracleDriver");
            connection = DriverManager.getConnection("jdbc:oracle:thin:@DEV:1521:DEV","DEV","DEV");
			Statement statement = connection.createStatement();
			String sql = ("SELECT * FROM tblnm");
			resultSet = statement.executeQuery(sql);
			ResultSetMetaData metadata = resultSet.getMetaData();
			int count = metadata.getColumnCount();
			ArrayList<String> columns = new ArrayList<>(); 
    <table>
    <tr> //row for displaying column names
        <%for(int i=1; i<=count;i++)
            { 
             String name = metadata.getColumnName(i);
             columns.add(name);      
        %>
          <td><%=name%></td> //displaying column name
        <% } %>
    </tr>
     <%
      while(resultSet.next())
        {
     %>
    <tr>  
        //looping through names      
         <% for(int i=1;i<columns.size();i++) { %>
          //get values from particular columns  
            <td><%= resultSet.getString(columns.get(i))%></td>
         <% } %> //closing for loop
    </tr>
       <%
        }
    		
    		connection.close();
    		} catch (Exception e) {
    		e.printStackTrace();
    		}
    		%>
    		</table>
    		</body>
    		</html>	

【问题讨论】:

    标签: html jsp resultset


    【解决方案1】:

    您的表结构错误。您需要先显示所有列名,然后显示列下的所有行当前您的代码不显示任何列名,因为您没有编写任何代码来执行相同操作。相反,您的代码应该看起来像下面:

    resultSet = statement.executeQuery(sql);
     ResultSetMetaData metadata = resultSet.getMetaData();
     int count = metadata.getColumnCount();
     ArrayList<String> columns = new ArrayList<>(); 
        <table>
        <tr> //row for displaying column names
            <%for(int i=1; i<=count;i++)
                { 
                 String name = metadata.getColumnName(i);
                 columns.add(name);      
            %>
              <td><%=name%></td> //displaying column name
            <% } %>
        </tr>
         <%
          while(resultSet.next())
            {
         %>
        <tr>  
            //looping through names      
             <% for(int i=1;i<columns.size();i++) { %>
              //get values from particular columns  
                <td><%= resultSet.getString(columns.get(i))%></td>
             <% } %> //closing for loop
        </tr>
           <%
            } //closing while loop 
           //other codes put here
           %>
      </table>
    

    【讨论】:

    • 我已经在 try { 之前定义了一个表。当我添加您的代码时,它会抛出错误。我已经编辑了我的原始帖子以包含修改后的代码。
    • 首先检查列名是否正确显示..注释掉while(resultSet.next())内的整个for loop,并检查arraylist是否具有所需的值。
    • 没有显示列。数组列表正在填充列名
    • 这是不可能的,因为如果 arraylist 正在填充,那么为什么不显示列名,因为我们在 for loop 下显示相同,我现在很困惑 :)
    • 你能检查一下上面修改过的代码吗...我已经在 TRY 块中包含了 Table 抛出错误。
    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多