如何从camel-sql组件

时间:2016-08-30 01:19:51

标签: metadata camel-sql

我正在寻找一种方法来使用camel-sql组件获取给定表名的所有列元数据。

虽然它在幕后使用spring-jdbc但我没有看到获取ResultSetMetaData的方法。

1 个答案:

答案 0 :(得分:0)

我找不到从camel-sql组件获取列详细信息的直接方法,现在设法使用spring jdbc模板和数据源获取信息。

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;
    }