⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databaseinformationmain.java

📁 hsql是很有名的嵌入式数据库
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
     * SOURCE_DATA_TYPE  VARCHAR   source type of REF attribute     * TYPE_SUB          INTEGER   HSQLDB data subtype code     * </pre> <p>     *     * @return a <code>Table</code> object describing the     *        visible columns of all accessible     *        tables defined within this database.<p>     * @throws HsqlException if an error occurs while producing the table     */    final Table SYSTEM_COLUMNS() throws HsqlException {        Table t = sysTables[SYSTEM_COLUMNS];        if (t == null) {            t = createBlankTable(sysTableHsqlNames[SYSTEM_COLUMNS]);            addColumn(t, "TABLE_CAT", Types.VARCHAR);            addColumn(t, "TABLE_SCHEM", Types.VARCHAR);            addColumn(t, "TABLE_NAME", Types.VARCHAR, false);          // not null            addColumn(t, "COLUMN_NAME", Types.VARCHAR, false);         // not null            addColumn(t, "DATA_TYPE", Types.SMALLINT, false);          // not null            addColumn(t, "TYPE_NAME", Types.VARCHAR, 32, false);       // not null            addColumn(t, "COLUMN_SIZE", Types.INTEGER);            addColumn(t, "BUFFER_LENGTH", Types.INTEGER);            addColumn(t, "DECIMAL_DIGITS", Types.INTEGER);            addColumn(t, "NUM_PREC_RADIX", Types.INTEGER);            addColumn(t, "NULLABLE", Types.INTEGER, false);            // not null            addColumn(t, "REMARKS", Types.VARCHAR);            addColumn(t, "COLUMN_DEF", Types.VARCHAR);            addColumn(t, "SQL_DATA_TYPE", Types.INTEGER);            addColumn(t, "SQL_DATETIME_SUB", Types.INTEGER);            addColumn(t, "CHAR_OCTET_LENGTH", Types.INTEGER);            addColumn(t, "ORDINAL_POSITION", Types.INTEGER, false);    // not null            addColumn(t, "IS_NULLABLE", Types.VARCHAR, 3, false);      // not null            addColumn(t, "SCOPE_CATLOG", Types.VARCHAR);            addColumn(t, "SCOPE_SCHEMA", Types.VARCHAR);            addColumn(t, "SCOPE_TABLE", Types.VARCHAR);            addColumn(t, "SOURCE_DATA_TYPE", Types.VARCHAR);            addColumn(t, "TYPE_SUB", Types.INTEGER, false);            // not null            // order: TABLE_SCHEM, TABLE_NAME, ORDINAL_POSITION            // added for unique: TABLE_CAT            // false PK, as TABLE_SCHEM and/or TABLE_CAT may be null            t.createPrimaryKey(null, new int[] {                1, 2, 16, 0            }, false);            return t;        }        // calculated column values        String tableCatalog;        String tableSchema;        String tableName;        // intermediate holders        int         columnCount;        Iterator    tables;        Table       table;        Object[]    row;        DITableInfo ti;        // column number mappings        final int itable_cat         = 0;        final int itable_schem       = 1;        final int itable_name        = 2;        final int icolumn_name       = 3;        final int idata_type         = 4;        final int itype_name         = 5;        final int icolumn_size       = 6;        final int ibuffer_length     = 7;        final int idecimal_digits    = 8;        final int inum_prec_radix    = 9;        final int inullable          = 10;        final int iremark            = 11;        final int icolumn_def        = 12;        final int isql_data_type     = 13;        final int isql_datetime_sub  = 14;        final int ichar_octet_length = 15;        final int iordinal_position  = 16;        final int iis_nullable       = 17;        final int itype_sub          = 22;        // Initialization        tables = allTables();        ti     = new DITableInfo();        // Do it.        while (tables.hasNext()) {            table = (Table) tables.next();            if (!isAccessibleTable(table)) {                continue;            }            ti.setTable(table);            tableCatalog = ns.getCatalogName(table);            tableSchema  = table.getSchemaName();            tableName    = ti.getName();            columnCount  = table.getColumnCount();            for (int i = 0; i < columnCount; i++) {                row                     = t.getEmptyRowData();                row[itable_cat]         = tableCatalog;                row[itable_schem]       = tableSchema;                row[itable_name]        = tableName;                row[icolumn_name]       = ti.getColName(i);                row[idata_type]         = ti.getColDataType(i);                row[itype_name]         = ti.getColDataTypeName(i);                row[icolumn_size]       = ti.getColSize(i);                row[ibuffer_length]     = ti.getColBufLen(i);                row[idecimal_digits]    = ti.getColScale(i);                row[inum_prec_radix]    = ti.getColPrecRadix(i);                row[inullable]          = ti.getColNullability(i);                row[iremark]            = ti.getColRemarks(i);                row[icolumn_def]        = ti.getColDefault(i);                row[isql_data_type]     = ti.getColSqlDataType(i);                row[isql_datetime_sub]  = ti.getColSqlDateTimeSub(i);                row[ichar_octet_length] = ti.getColCharOctLen(i);                row[iordinal_position]  = ValuePool.getInt(i + 1);                row[iis_nullable]       = ti.getColIsNullable(i);                row[itype_sub]          = ti.getColDataTypeSub(i);                t.insertSys(row);            }        }        t.setDataReadOnly(true);        return t;    }    /**     * Retrieves a <code>Table</code> object describing, for each     * accessible referencing and referenced table, how the referencing     * tables import, for the purposes of referential integrity,     * the columns of the referenced tables.<p>     *     * Each row is a foreign key column description with the following     * columns: <p>     *     * <pre class="SqlCodeExample">     * PKTABLE_CAT   VARCHAR   referenced table catalog     * PKTABLE_SCHEM VARCHAR   referenced table schema     * PKTABLE_NAME  VARCHAR   referenced table name     * PKCOLUMN_NAME VARCHAR   referenced column name     * FKTABLE_CAT   VARCHAR   referencing table catalog     * FKTABLE_SCHEM VARCHAR   referencing table schema     * FKTABLE_NAME  VARCHAR   referencing table name     * FKCOLUMN_NAME VARCHAR   referencing column     * KEY_SEQ       SMALLINT  sequence number within foreign key     * UPDATE_RULE   SMALLINT     *    { Cascade | Set Null | Set Default | Restrict (No Action)}?     * DELETE_RULE   SMALLINT     *    { Cascade | Set Null | Set Default | Restrict (No Action)}?     * FK_NAME       VARCHAR   foreign key constraint name     * PK_NAME       VARCHAR   primary key or unique constraint name     * DEFERRABILITY SMALLINT     *    { initially deferred | initially immediate | not deferrable }     * </pre> <p>     *     * @return a <code>Table</code> object describing how accessible tables     *      import other accessible tables' primary key and/or unique     *      constraint columns     * @throws HsqlException if an error occurs while producing the table     */    final Table SYSTEM_CROSSREFERENCE() throws HsqlException {        Table t = sysTables[SYSTEM_CROSSREFERENCE];        if (t == null) {            t = createBlankTable(sysTableHsqlNames[SYSTEM_CROSSREFERENCE]);            addColumn(t, "PKTABLE_CAT", Types.VARCHAR);            addColumn(t, "PKTABLE_SCHEM", Types.VARCHAR);            addColumn(t, "PKTABLE_NAME", Types.VARCHAR, false);      // not null            addColumn(t, "PKCOLUMN_NAME", Types.VARCHAR, false);     // not null            addColumn(t, "FKTABLE_CAT", Types.VARCHAR);            addColumn(t, "FKTABLE_SCHEM", Types.VARCHAR);            addColumn(t, "FKTABLE_NAME", Types.VARCHAR, false);      // not null            addColumn(t, "FKCOLUMN_NAME", Types.VARCHAR, false);     // not null            addColumn(t, "KEY_SEQ", Types.SMALLINT, false);          // not null            addColumn(t, "UPDATE_RULE", Types.SMALLINT, false);      // not null            addColumn(t, "DELETE_RULE", Types.SMALLINT, false);      // not null            addColumn(t, "FK_NAME", Types.VARCHAR);            addColumn(t, "PK_NAME", Types.VARCHAR);            addColumn(t, "DEFERRABILITY", Types.SMALLINT, false);    // not null            // order: FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, and KEY_SEQ            // added for unique: FK_NAME            // false PK, as FKTABLE_CAT, FKTABLE_SCHEM and/or FK_NAME            // may be null            t.createPrimaryKey(null, new int[] {                4, 5, 6, 8, 11            }, false);            return t;        }        // calculated column values        String  pkTableCatalog;        String  pkTableSchema;        String  pkTableName;        String  pkColumnName;        String  fkTableCatalog;        String  fkTableSchema;        String  fkTableName;        String  fkColumnName;        Integer keySequence;        Integer updateRule;        Integer deleteRule;        String  fkName;        String  pkName;        Integer deferrability;        // Intermediate holders        Iterator      tables;        Table         table;        Table         fkTable;        Table         pkTable;        int           columnCount;        int[]         mainCols;        int[]         refCols;        Constraint[]  constraints;        Constraint    constraint;        int           constraintCount;        HsqlArrayList fkConstraintsList;        Object[]      row;        DITableInfo   pkInfo;        DITableInfo   fkInfo;        // column number mappings        final int ipk_table_cat   = 0;        final int ipk_table_schem = 1;        final int ipk_table_name  = 2;        final int ipk_column_name = 3;        final int ifk_table_cat   = 4;        final int ifk_table_schem = 5;        final int ifk_table_name  = 6;        final int ifk_column_name = 7;        final int ikey_seq        = 8;        final int iupdate_rule    = 9;        final int idelete_rule    = 10;        final int ifk_name        = 11;        final int ipk_name        = 12;        final int ideferrability  = 13;        tables = database.schemaManager.allTablesIterator();        pkInfo = new DITableInfo();        fkInfo = new DITableInfo();        // the only deferrability rule currently supported by hsqldb is:        deferrability = ValuePool.getInt(Constraint.NOT_DEFERRABLE);        // We must consider all the constraints in all the user tables, since        // this is where reference relationships are recorded.  However, we        // are only concerned with Constraint.FOREIGN_KEY constraints here        // because their corresponing Constraint.MAIN entries are essentially        // duplicate data recorded in the referenced rather than the        // referencing table.  Also, we skip constraints where either        // the referenced, referencing or both tables are not accessible        // relative to the session of the calling context        fkConstraintsList = new HsqlArrayList();        while (tables.hasNext()) {            table = (Table) tables.next();            if (!isAccessibleTable(table)) {                continue;            }            constraints     = table.getConstraints();            constraintCount = constraints.length;            for (int i = 0; i < constraintCount; i++) {                constraint = (Constraint) constraints[i];                if (constraint.getType() == Constraint.FOREIGN_KEY                        && isAccessibleTable(constraint.getRef())) {                    fkConstraintsList.add(constraint);                }            }        }        // Now that we have all of the desired constraints, we need to        // process them, generating one row in our ouput table for each        // imported/exported column pair of each constraint.        // Do it.        for (int i = 0; i < fkConstraintsList.size(); i++) {            constraint = (Constraint) fkConstraintsList.get(i);            pkTable    = constraint.getMain();            pkInfo.setTable(pkTable);            pkTableName = pkInfo.getName();            fkTable     = constraint.getRef();            fkInfo.setTable(fkTable);            fkTableName    = fkInfo.getName();            pkTableCatalog = ns.getCatalogName(pkTable);            pkTableSchema  = pkTable.getSchemaName();            fkTableCatalog = ns.getCatalogName(fkTable);            fkTableSchema  = fkTable.getSchemaName();            mainCols       = constraint.getMainColumns();            refCols        = constraint.getRefColumns();            columnCount    = refCols.length;            fkName         = constraint.getFkName();            pkName         = constraint.getPkName();            //pkName = constraint.getMainIndex().getName().name;            deleteRule = ValuePool.getInt(constraint.getDeleteAction());            updateRule = ValuePool.getInt(constraint.getUpdateAction());            for (int j = 0; j < columnCount; j++) {                keySequence          = ValuePool.getInt(j + 1);                pkColumnName         = pkInfo.getColName(mainCols[j]);                fkColumnName         = fkInfo.getColName(refCols[j]);                row                  = t.getEmptyRowData();                row[ipk_table_cat]   = pkTableCatalog;                row[ipk_table_schem] = pkTableSchema;                row[ipk_table_name]  = pkTableName;                row[ipk_column_name] = pkColumnName;                row[ifk_table_cat]   = fkTableCatalog;                row[ifk_table_schem] = fkTableSchema;                row[ifk_table_name]  = fkTableName;                row[ifk_column_name] = fkColumnName;                row[ikey_seq]        = keySequence;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -