Use below lines of code to get columns count and name from ResultSet.
Metadata keeps all information about columns and we retrieve as below
ResultSetMetaData metaData = resultSet.getMetaData(); //No of columns in resultset int columnCount = metaData.getColumnCount(); //Column Name where i is column number String columnName=metaData.getColumnLabel(i)
Complete Example :
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class DynamicRows { public static void main(String[] args) { DynamicRows dr=new DynamicRows(); List<Map<String, Object>> rows=dr.getSearchRecords(); } public List<Map<String, Object>> getSearchRecords() { ResultSet rs = null; Connection conn = null; List<Map<String, Object>> rows = null; try { conn = openConnection(); if (conn != null) { java.sql.PreparedStatement ps = conn.prepareStatement( "select * from department"); rs = ps.executeQuery(); if (rs != null) { rows = new ArrayList<Map<String, Object>>(); //Code get resultset metadata information java.sql.ResultSetMetaData metaData = rs.getMetaData(); //To get column count in result set int columnCount = metaData.getColumnCount(); while (rs.next()) { Map<String, Object> columns = new LinkedHashMap<String, Object>(); System.out.println("=======Row Start Here==========="); for (int i = 1; i <= columnCount; i++) { //To get Column Name System.out.println(metaData.getColumnLabel(i)+"->"+rs.getObject(i)); columns.put(metaData.getColumnLabel(i), rs.getObject(i)); } rows.add(columns); } } } } catch (Exception ex) { ex.printStackTrace(); } finally { try { if(rs!=null) { rs.close(); } } catch (SQLException ex) { ex.printStackTrace(); } closeConnection(conn); } return rows; } private Connection openConnection() { Connection conn = null; try { System.out.println("Load JDBC Driver"); Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { System.out.println("Fail to Load JDBC Driver "); e.printStackTrace(); return null; } System.out.println("JDBC Driver Registered ."); try { conn = DriverManager.getConnection("jdbc:oracle:thin:@serverinfo:1522/service", "userId", "password"); } catch (SQLException e) { System.out.println("Connection Failed to Connect !"); e.printStackTrace(); return null; } if (conn != null) { System.out.println("JDBC connection is Successful !"); } else { System.out.println("JDBC Connection failed !"); } return conn; } private void closeConnection(Connection conn) { if (conn != null) { try { conn.close(); System.out.println("Connection closed successfully"); } catch (SQLException ex) { System.out.println("Failed to close JDBC Connection !"); ex.printStackTrace(); } } else { System.out.println("No JDBC connection to close !"); } } }
Above code is working java example for getting dynamic columns for rows and below is HTML for showing values on the page import both html and page in you application for utilize it.
<table> <thead> <tr> <c:forEach items="${rows[0]}" var="column"> <td><c:out value="${column.key}" /></td> </c:forEach></tr> </thead> <tbody> <c:forEach items="${rows}" var="columns"> <tr> <c:forEach items="${columns}" var="column"> <td><c:out value="${column.value}" /></td> </c:forEach></tr> </c:forEach></tbody> </table>
More Sample Code
For more java and JDBC codes follow below links
You must log in to post a comment.