public static DataSetResult executeJdbcQuery()

in src/main/java/com/uber/uberscriptquery/util/SqlUtils.java [93:125]


    public static DataSetResult executeJdbcQuery(String jdbcUrl, String sql) {
        logger.info(String.format("Querying jdbc data by sql: %s", sql));

        loadJdbcDriverClass(jdbcUrl);

        DataSetResult dataSetResult = new DataSetResult();
        List<String> columnNames = new ArrayList<>();
        List<List<Object>> rows = new ArrayList<>();
        try (Connection con = DriverManager.getConnection(jdbcUrl)) {
            logger.info("Running sql: " + sql);
            try (Statement stmt = con.createStatement()) {
                try (ResultSet resultSet = stmt.executeQuery(sql)) {
                    for (int i = 0; i < resultSet.getMetaData().getColumnCount(); i++) {
                        columnNames.add(resultSet.getMetaData().getColumnName(i + 1));
                    }
                    while (resultSet.next()) {
                        List<Object> values = new ArrayList<>();
                        for (int i = 0; i < resultSet.getMetaData().getColumnCount(); i++) {
                            Object value = resultSet.getObject(i + 1);
                            values.add(value);
                        }
                        rows.add(values);
                    }
                    logger.info("Finished sql: " + sql);
                    dataSetResult.setColumnNames(columnNames);
                    dataSetResult.setRows(rows);
                    return dataSetResult;
                }
            }
        } catch (SQLException e) {
            throw new RuntimeException(String.format("Failed to execute query sql: %s, %s", sql, e.getMessage()), e);
        }
    }