0

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

尽管它在幕后使用 spring-jdbc,但我看不到获取 ResultSetMetaData 的方法。

4

1 回答 1

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;
    }
于 2017-03-19T14:44:43.673 回答