Skip to content

Instantly share code, notes, and snippets.

@arttuladhar
Created June 28, 2013 20:37
Show Gist options
  • Save arttuladhar/5887916 to your computer and use it in GitHub Desktop.
Save arttuladhar/5887916 to your computer and use it in GitHub Desktop.
Converts resultSet to HashMap of Strings and Objects
/**
* <h2> Converts ResultSet to HashMap of List<String,Object></h2>
* @param row
* @param rs_SubItemType
* @throws SQLException
*/
private static void getHashMap( List<Map<String, Object>> row, ResultSet rs_SubItemType) throws SQLException {
ResultSetMetaData metaData = rs_SubItemType.getMetaData();
int colCount = metaData.getColumnCount();
while (rs_SubItemType.next()) {
Map<String, Object> columns = new HashMap<String, Object>();
for (int i = 1; i <= colCount; i++) {
columns.put(metaData.getColumnLabel(i), rs_SubItemType.getObject(i));
}
row.add(columns);
}
}
@saleemdev
Copy link

This will return only one row - the last row

@iaubain
Copy link

iaubain commented Sep 5, 2022

For dynamic query results you can try something like:

public <T> List<T> findWithDynamicQuery(String query){ Connection conn = null; PreparedStatement statement = null; List<Object> mResults = new ArrayList<>(); try { conn = UtilConnection.getDBConnection().getConnection(); } catch (SQLException e) { e.printStackTrace(out); return (List<T>) mResults; } try { statement = conn.prepareStatement(query); ResultSet result = statement.executeQuery(); ResultSetMetaData metaData = result.getMetaData(); int column = metaData.getColumnCount(); while (result.next()) { HashMap<Object, Object> rows = new HashMap<>(); for(int i = 1; i <= column; i++){ rows.put(metaData.getColumnLabel(i), result.getObject(i)); } mResults.add(rows); } result.close(); return (List<T>) mResults; } catch (SQLException e) { e.printStackTrace(out); }finally{ if(statement != null){ try { statement.close(); } catch (SQLException e) { } } if(conn != null){ try { conn.close(); } catch (SQLException e) { } } } return (List<T>) mResults; }

**Connection utility (Amend it to match your needs:**

`public static javax.sql.DataSource getDBConnection(){
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("org.mariadb.jdbc.Driver");
    dataSource.setUrl("jdbc:mariadb://.........");
    dataSource.setUsername("db_user");
    dataSource.setPassword("db_password");
    return dataSource;
}`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment