/db-diff/src/main/java/com/googlecode/hdbc/dbdiff/db/QueryTableColumns.java

http://hdbc.googlecode.com/ · Java · 46 lines · 38 code · 8 blank · 0 comment · 1 complexity · 1467d2a17cbf884e06ab329c5418fdb1 MD5 · raw file

  1. package com.googlecode.hdbc.dbdiff.db;
  2. import java.math.BigDecimal;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import com.googlecode.hdbc.dbdiff.model.ColumnDefinition;
  7. import com.googlecode.hdbc.dbdiff.model.TabularObjects;
  8. public class QueryTableColumns implements IQueryDefinition<ColumnDefinition> {
  9. private final String tableName;
  10. private final TabularObjects result;
  11. private static final String SQL = "SELECT column_name, data_type, data_length, data_precision, data_scale, nullable " +
  12. "FROM user_tab_columns " +
  13. "WHERE table_name = ? ";
  14. public QueryTableColumns(final String owningDb, final String table) {
  15. tableName = table;
  16. result = new TabularObjects(owningDb);
  17. }
  18. public final String getParameterizedSQL() {
  19. return SQL;
  20. }
  21. public final void processStatement(final PreparedStatement stmt) throws SQLException {
  22. stmt.setString(Parameter.ONE.index(), tableName);
  23. ResultSet rs = stmt.executeQuery();
  24. while (rs.next()) {
  25. String columnName = rs.getString("column_name");
  26. String dataType = rs.getString("data_type");
  27. int dataLength = rs.getInt("data_length");
  28. BigDecimal dataPrecision = rs.getBigDecimal("data_precision");
  29. BigDecimal dataScale = rs.getBigDecimal("data_scale");
  30. String nullable = rs.getString("nullable");
  31. result.add(new ColumnDefinition(columnName, dataType, dataLength,
  32. dataPrecision, dataScale, nullable));
  33. }
  34. }
  35. public final TabularObjects result() {
  36. return result;
  37. }
  38. }