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
Advertisements
Advertisements
Your Feedback Motivate Us
If our FacingIssuesOnIT Experts solutions guide you to resolve your issues and improve your knowledge. Please share your comments, like and subscribe to get notifications for our posts.
Happy Learning !!!