0

I'm looking for a way to get all the column meta data for the given table name using camel-sql component.

Though it uses spring-jdbc behind the scenes i do not see a way to get the ResultSetMetaData.

Venkat
  • 314
  • 3
  • 10

1 Answers1

0

I couldn't find a direct way to get the column details from camel-sql component, For now managed to get the information using spring jdbc template and data source.

public List<String> getColumnNamesFromTable(final TableData tableData) throws MetaDataAccessException {
        final List<String> columnNames = new ArrayList<String>();
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        StringBuilder query = new StringBuilder();
        query.append("SELECT * FROM ").append(SINGLE_BLANK_SPACE);
        query.append(tableData.getSchemaName());
        query.append(tableData.getTableName()).append(SINGLE_BLANK_SPACE);
        query.append("WHERE rownum < 0");

        jdbcTemplate.query(query.toString(), new ResultSetExtractor<Integer>() {
            @Override
            public Integer extractData(ResultSet rs) throws SQLException, DataAccessException {
                ResultSetMetaData rsmd = rs.getMetaData();
                int columnCount = rsmd.getColumnCount();
                for (int i = 1; i <= columnCount; i++) {
                    columnNames.add(rsmd.getColumnName(i).toUpperCase());
                }
                return columnCount;
            }
        });
        return columnNames;
    }
Venkat
  • 314
  • 3
  • 10