📄 databaseinformation.java
字号:
// fredt - don't report primary key on hidden column if (cols[0] == table.getColumnCount()) { continue; } int len = cols.length; for (int j = 0; j < len; j++) { Object o[] = t.getNewRow(); o[0] = o[1] = ""; o[2] = table.getName().name; o[3] = table.getColumn(cols[j]).columnName.name; o[4] = new Integer((j + 1)); o[5] = index.getName().name; t.insert(o, null); } } return t; } case SYSTEM_IMPORTEDKEYS : case SYSTEM_EXPORTEDKEYS : case SYSTEM_CROSSREFERENCE : return getCrossReference(name, session); case SYSTEM_TYPEINFO : { t.addColumn("TYPE_NAME", Types.VARCHAR); t.addColumn("DATA_TYPE", Types.SMALLINT); t.addColumn("PRECISION", Types.INTEGER); t.addColumn("LITERAL_PREFIX", Types.VARCHAR); t.addColumn("LITERAL_SUFFIX", Types.VARCHAR); t.addColumn("CREATE_PARAMS", Types.VARCHAR); t.addColumn("NULLABLE", Types.SMALLINT); t.addColumn("CASE_SENSITIVE", Types.BIT); t.addColumn("SEARCHABLE", Types.SMALLINT); t.addColumn("UNSIGNED_ATTRIBUTE", Types.BIT); t.addColumn(META_FIXED_PREC_SCALE, Types.BIT); t.addColumn("AUTO_INCREMENT", Types.BIT); t.addColumn("LOCAL_TYPE_NAME", Types.VARCHAR); t.addColumn("MINIMUM_SCALE", Types.SMALLINT); t.addColumn("MAXIMUM_SCALE", Types.SMALLINT); t.addColumn("SQL_DATE_TYPE", Types.INTEGER); t.addColumn("SQL_DATETIME_SUB", Types.INTEGER); t.addColumn("NUM_PREC_RADIX", Types.INTEGER); t.createPrimaryKey(); for (int h = 0; h < Column.typesArray.length; h++) { for (int i = 0; i < Column.typesArray[h].length; i++) { Object o[] = t.getNewRow(); int type = Column.typesArray[h][i]; o[0] = Column.getTypeString(type); o[1] = new Integer(type); o[2] = INTEGER_0; // precision o[6] = new Integer(DatabaseMetaData.typeNullable); o[7] = new Boolean(true); // case sensitive o[8] = new Integer(DatabaseMetaData.typeSearchable); o[9] = new Boolean(false); // unsigned o[10] = new Boolean(type == Types.NUMERIC || type == Types.DECIMAL); o[11] = new Boolean(type == Types.INTEGER); o[12] = o[0]; o[13] = INTEGER_0; o[14] = INTEGER_0; // maximum scale o[17] = new Integer(10); t.insert(o, null); } } return t; } case SYSTEM_INDEXINFO : { t.addColumn("TABLE_" + META_CAT, Types.VARCHAR); t.addColumn("TABLE_" + META_SCHEM, Types.VARCHAR); t.addColumn("TABLE_NAME", Types.VARCHAR); t.addColumn("NON_UNIQUE", Types.BIT); t.addColumn("INDEX_QUALIFIER", Types.VARCHAR); t.addColumn("INDEX_NAME", Types.VARCHAR); t.addColumn("TYPE", Types.SMALLINT); t.addColumn(META_ORDINAL_POSITION, Types.SMALLINT); t.addColumn("COLUMN_NAME", Types.VARCHAR); t.addColumn(META_ASC_OR_DESC, Types.VARCHAR); t.addColumn("CARDINALITY", Types.INTEGER); t.addColumn("PAGES", Types.INTEGER); t.addColumn("FILTER_CONDITION", Types.VARCHAR); t.createPrimaryKey(); for (int i = 0, tSize = tTable.size(); i < tSize; i++) { Table table = (Table) tTable.elementAt(i); for (int j = 0; j < table.getIndexCount(); j++) { Index index = table.getIndex(j); int cols[] = index.getColumns(); int len = index.getVisibleColumns(); if (len == 0) { continue; } for (int k = 0; k < len; k++) { Object o[] = t.getNewRow(); o[0] = o[1] = ""; o[2] = table.getName().name; o[3] = new Boolean(!index.isUnique()); o[5] = index.getName().name; o[6] = new Integer( DatabaseMetaData.tableIndexOther); o[7] = new Integer(k + 1); o[8] = table.getColumn(cols[k]).columnName.name; o[9] = "A"; t.insert(o, null); } } } return t; } case SYSTEM_UDTS : { t.addColumn("TYPE_" + META_CAT, Types.VARCHAR); t.addColumn("TYPE_" + META_SCHEM, Types.VARCHAR); t.addColumn("TYPE_NAME", Types.VARCHAR); t.addColumn("CLASS_NAME", Types.BIT); t.addColumn("DATA_TYPE", Types.VARCHAR); t.addColumn("REMARKS", Types.VARCHAR);// boucherb@users 20020415 added for JDBC 3 clients t.addColumn("BASE_TYPE ", Types.SMALLINT); t.createPrimaryKey(); return t; } case SYSTEM_CONNECTIONINFO : { t.addColumn("KEY", Types.VARCHAR); t.addColumn("VALUE", Types.VARCHAR); t.createPrimaryKey(); Object o[] = t.getNewRow(); o[0] = "USER"; o[1] = session.getUsername(); t.insert(o, null); o = t.getNewRow(); o[0] = "READONLY"; o[1] = session.isReadOnly() ? "TRUE" : "FALSE"; t.insert(o, null); o = t.getNewRow(); o[0] = "MAXROWS"; o[1] = String.valueOf(session.getMaxRows()); t.insert(o, null); o = t.getNewRow(); o[0] = "DATABASE"; o[1] = session.getDatabase().getName(); t.insert(o, null); o = t.getNewRow(); o[0] = "IDENTITY"; o[1] = String.valueOf(session.getLastIdentity()); t.insert(o, null); return t; } case SYSTEM_USERS : { t.addColumn("USER", Types.VARCHAR); t.addColumn("ADMIN", Types.BIT); t.createPrimaryKey(); Vector v = aAccess.getUsers(); for (int i = 0, vSize = v.size(); i < vSize; i++) { User u = (User) v.elementAt(i); // todo: this is not a nice implementation if (u == null) { continue; } String user = u.getName(); if (!user.equals("PUBLIC")) { Object o[] = t.getNewRow(); o[0] = user; o[1] = new Boolean(u.isAdmin()); t.insert(o, null); } } return t; } default : return null; } } static final Short importedKeyNoActionShort = new Short((short) DatabaseMetaData.importedKeyNoAction); static final Short importedKeyCascadeShort = new Short((short) DatabaseMetaData.importedKeyCascade); static final Short importedKeyNotDeferrableShort = new Short((short) DatabaseMetaData.importedKeyNotDeferrable); Table getCrossReference(HsqlName name, Session session) throws SQLException { Table t = createTable(name); t.addColumn("PKTABLE_" + META_CAT, Types.VARCHAR); t.addColumn("PKTABLE_" + META_SCHEM, Types.VARCHAR); t.addColumn("PKTABLE_NAME", Types.VARCHAR); t.addColumn("PKCOLUMN_NAME", Types.VARCHAR); t.addColumn("FKTABLE_" + META_CAT, Types.VARCHAR); t.addColumn("FKTABLE_" + META_SCHEM, Types.VARCHAR); t.addColumn("FKTABLE_NAME", Types.VARCHAR); t.addColumn("FKCOLUMN_NAME", Types.VARCHAR); t.addColumn("KEY_SEQ", Types.SMALLINT); t.addColumn("UPDATE_RULE", Types.SMALLINT); t.addColumn("DELETE_RULE", Types.SMALLINT); t.addColumn("FK_NAME", Types.VARCHAR); t.addColumn("PK_NAME", Types.VARCHAR); t.addColumn("DEFERRABILITY", Types.SMALLINT); t.createPrimaryKey(); for (int i = 0, tSize = tTable.size(); i < tSize; i++) { Table table = (Table) tTable.elementAt(i); Vector constVect = table.getConstraints(); Constraint constraint; for (int j = 0; j < constVect.size(); j++) { constraint = (Constraint) constVect.elementAt(j); if (constraint.getType() != Constraint.FOREIGN_KEY) { continue; } String mainTableName = constraint.getMain().tableName.name; String refTableName = constraint.getRef().tableName.name; if (dDatabase.findUserTable(mainTableName) == null || dDatabase.findUserTable(refTableName) == null) { continue; } int pkcols[] = constraint.getMainColumns(); int fkcols[] = constraint.getRefColumns(); int len = pkcols.length; for (int k = 0; k < len; k++) { Object o[] = t.getNewRow(); o[0] = o[1] = ""; o[2] = mainTableName; o[3] = constraint.getMain().getColumn( pkcols[k]).columnName.name; o[4] = o[5] = ""; o[6] = refTableName; o[7] = constraint.getRef().getColumn( fkcols[k]).columnName.name; o[8] = new Short((short) (k + 1)); o[9] = importedKeyNoActionShort; o[10] = constraint.isCascade() ? importedKeyCascadeShort : importedKeyNoActionShort; o[11] = constraint.getFkName(); o[12] = constraint.getPkName(); o[13] = importedKeyNotDeferrableShort; t.insert(o, null); } } } return t; } /** * Method declaration * * * @param name * * @return */ private Table createTable(HsqlName name) throws SQLException { return new Table(dDatabase, name, Table.SYSTEM_TABLE, null); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -