public JdbcTableMetaData(Env env, string catalog, string schema, string name, DatabaseMetaData md) { _catalog = catalog; _schema = schema; _name = name; _lastModified = env.getCurrentTime(); ResultSet rs = md.getColumns(_catalog, _schema, _name, null); try { while (rs.next()) { // COLUMN_NAME string columnName = rs.getString(4); JdbcColumnMetaData column = new JdbcColumnMetaData(this, rs); _columnMap.put(columnName, column); } rs.close(); try { rs = md.getPrimaryKeys(_catalog, _schema, _name); while (rs.next()) { // COLUMN_NAME string columnName = rs.getString(4); JdbcColumnMetaData column = _columnMap.get(columnName); column.setPrimaryKey(true); } } catch (SQLException e) { log.log(Level.FINE, e.ToString(), e); } finally { rs.close(); } rs = md.getIndexInfo(_catalog, _schema, _name, false, true); while (rs.next()) { // COLUMN_NAME string columnName = rs.getString(9); JdbcColumnMetaData column = _columnMap.get(columnName); column.setIndex(true); } } catch (Exception e) { log.log(Level.FINE, e.ToString(), e); } finally { rs.close(); } }
public virtual TableMetaData getTableMetaData(string tableName) { TableMetaData result = new TableMetaData(); ResultSet resultSet = null; try { try { result.TableName = tableName; DatabaseMetaData metaData = DbSqlSession.SqlSession.Connection.MetaData; if (DbSqlSessionFactory.POSTGRES.Equals(DbSqlSession.DbSqlSessionFactory.DatabaseType)) { tableName = tableName.ToLower(); } string databaseSchema = DbSqlSession.DbSqlSessionFactory.DatabaseSchema; tableName = DbSqlSession.prependDatabaseTablePrefix(tableName); resultSet = metaData.getColumns(null, databaseSchema, tableName, null); while (resultSet.next()) { string name = resultSet.getString("COLUMN_NAME").ToUpper(); string type = resultSet.getString("TYPE_NAME").ToUpper(); result.addColumnMetaData(name, type); } } catch (SQLException se) { throw se; } finally { if (resultSet != null) { resultSet.close(); } } } catch (Exception e) { throw LOG.retrieveMetadataException(e); } if (result.ColumnNames.Count == 0) { // According to API, when a table doesn't exist, null should be returned result = null; } return(result); }