Example #1
0
        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();
            }
        }
Example #2
0
        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);
        }