private String getPrimaryKey(String tableName) throws Exception { String result = null; Connection connection = null; try { connection = this.dataSource.getConnection(); ResultSet primaryKeys = TableMetadataHelper.getPrimaryKeys(connection, tableName); List<String> primaryKeysList = new ArrayList<String>(); while (primaryKeys.next()) { String columnName = primaryKeys.getString(COLUMN_NAME); primaryKeysList.add(columnName); } if (primaryKeysList.size() == 0) { throw new Exception(String.format("Trying to manipulate data records for a table without a primary key: %s", tableName)); } if (primaryKeysList.size() > 1) { throw new Exception( String.format("Trying to manipulate data records for a table with more than one columns in the primary key: %s", tableName)); } result = primaryKeysList.get(0); } finally { if (connection != null) { connection.close(); } } return result; }
/** * Returns the columns result set * * @param connection the connection * @param name the table name * @return the result set with the columns metadata * @throws SQLException in case of an error */ public static List<TableColumn> getColumns(Connection connection, String name) throws SQLException { DatabaseMetaData meta = connection.getMetaData(); if (name == null) { throw new SQLException("Error on getting columns of table: null"); } ResultSet columns = meta.getColumns(null, null, name, null); if (columns.next()) { return populateColumns(meta.getColumns(null, null, name, null)); } columns = meta.getColumns(null, null, name.toLowerCase(), null); if (columns.next()) { return populateColumns(meta.getColumns(null, null, name.toLowerCase(), null)); } columns = meta.getColumns(null, null, name.toUpperCase(), null); return populateColumns(columns); }
public String getTableData() { String data = ""; if (getTableName() == null) { data = COULD_NOT_RETRIEVE_TABLE_DATA; logger.error(COULD_NOT_RETRIEVE_TABLE_DATA); return data; } try { Connection connection = null; try { connection = dataSource.getConnection(); List<TableColumn> availableTableColumns = TableMetadataHelper.getColumns(connection, getTableName()); setTableColumns(availableTableColumns.toArray(new TableColumn[] {})); data = getDataForTable(); } finally { if (connection != null) { connection.close(); } } } catch (Exception e) { logger.error(ERROR_ON_LOADING_TABLE_COLUMNS_FROM_DATABASE_FOR_TABLE + getTableName(), e); } return data; }
List<TableColumn> availableTableColumns = TableMetadataHelper.getColumns(connection, tableName);