📄 databaseinformation.java
字号:
/*
* DatabaseInformation.java
*/
package org.hsql;
import java.sql.*;
import java.io.*;
import java.net.*;
import java.util.*;
class DatabaseInformation {
private Database dDatabase;
private Access aAccess;
private Vector tTable;
DatabaseInformation(Database db,Vector tables,Access access) {
dDatabase=db;
tTable=tables;
aAccess=access;
}
// some drivers use the following titles:
// static final String META_SCHEM="OWNER";
// static final String META_CAT="QUALIFIER";
// static final String META_COLUMN_SIZE="PRECISION";
// static final String META_BUFFER_LENGTH="LENGTH";
// static final String META_DECIMAL_DIGITS="SCALE";
// static final String META_NUM_PREC_RADIX="RADIX";
// static final String META_FIXED_PREC_SCALE="MONEY";
// static final String META_ORDINAL_POSITON="SEQ_IN_INDEX";
// static final String META_ASC_OR_DESC="COLLATION";
static final String META_SCHEM="SCHEM";
static final String META_CAT="CAT";
static final String META_COLUMN_SIZE="COLUMN_SIZE";
static final String META_BUFFER_LENGTH="BUFFER_LENGTH";
static final String META_DECIMAL_DIGITS="DECIMAL_DIGITS";
static final String META_NUM_PREC_RADIX="NUM_PREC_RADIX";
static final String META_FIXED_PREC_SCALE="FIXED_PREC_SCALE";
static final String META_ORDINAL_POSITON="ORDINAL_POSITON";
static final String META_ASC_OR_DESC="ASC_OR_DESC";
Table getSystemTable(String name,Channel channel)
throws SQLException {
if(name.equals("SYSTEM_PROCEDURES")) {
Table t=createTable(name);
t.addColumn("PROCEDURE_"+META_CAT,Column.VARCHAR);
t.addColumn("PROCEDURE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("PROCEDURE_NAME",Column.VARCHAR);
t.addColumn("NUM_INPUT_PARAMS",Column.INTEGER);
t.addColumn("NUM_OUTPUT_PARAMS",Column.INTEGER);
t.addColumn("NUM_RESULT_SETS",Column.INTEGER);
t.addColumn("REMARKS",Column.VARCHAR);
t.addColumn("PROCEDURE_TYPE",Column.SMALLINT);
t.createPrimaryKey();
return t;
} else if(name.equals("SYSTEM_PROCEDURECOLUMNS")) {
Table t=createTable(name);
t.addColumn("PROCEDURE_"+META_CAT,Column.VARCHAR);
t.addColumn("PROCEDURE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("PROCEDURE_NAME",Column.VARCHAR);
t.addColumn("COLUMN_NAME",Column.VARCHAR);
t.addColumn("COLUMN_TYPE",Column.SMALLINT);
t.addColumn("DATA_TYPE",Column.SMALLINT);
t.addColumn("TYPE_NAME",Column.VARCHAR);
t.addColumn("PRECISION",Column.INTEGER);
t.addColumn("LENGTH",Column.INTEGER);
t.addColumn("SCALE",Column.SMALLINT);
t.addColumn("RADIX",Column.SMALLINT);
t.addColumn("NULLABLE",Column.SMALLINT);
t.addColumn("REMARKS",Column.VARCHAR);
t.createPrimaryKey();
return t;
} else if(name.equals("SYSTEM_TABLES")) {
Table t=createTable(name);
t.addColumn("TABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("TABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("TABLE_NAME",Column.VARCHAR);
t.addColumn("TABLE_TYPE",Column.VARCHAR);
t.addColumn("REMARKS",Column.VARCHAR);
t.createPrimaryKey();
for(int i=0;i<tTable.size();i++) {
Table table=(Table)tTable.elementAt(i);
Object o[]=t.getNewRow();
o[2]=table.getName();
o[3]="TABLE";
t.insert(o,null);
}
return t;
} else if(name.equals("SYSTEM_SCHEMAS")) {
Table t=createTable(name);
t.addColumn("TABLE_"+META_SCHEM,Column.VARCHAR);
t.createPrimaryKey();
return t;
} else if(name.equals("SYSTEM_CATALOGS")) {
Table t=createTable(name);
t.addColumn("TABLE_"+META_CAT,Column.VARCHAR);
t.createPrimaryKey();
return t;
} else if(name.equals("SYSTEM_TABLETYPES")) {
Table t=createTable(name);
t.addColumn("TABLE_TYPE",Column.VARCHAR);
t.createPrimaryKey();
Object o[]=t.getNewRow();
o[0]="TABLE";
t.insert(o,null);
return t;
} else if(name.equals("SYSTEM_COLUMNS")) {
Table t=createTable(name);
t.addColumn("TABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("TABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("TABLE_NAME",Column.VARCHAR);
t.addColumn("COLUMN_NAME",Column.VARCHAR);
t.addColumn("DATA_TYPE",Column.SMALLINT);
t.addColumn("TYPE_NAME",Column.VARCHAR);
t.addColumn(META_COLUMN_SIZE,Column.INTEGER);
t.addColumn(META_BUFFER_LENGTH,Column.INTEGER);
t.addColumn(META_DECIMAL_DIGITS,Column.INTEGER);
t.addColumn(META_NUM_PREC_RADIX,Column.INTEGER);
t.addColumn("NULLABLE",Column.INTEGER);
t.addColumn("REMARKS",Column.VARCHAR);
// Access and Intersolv do not return this fields
t.addColumn("COLUMN_DEF",Column.VARCHAR);
t.addColumn("SQL_DATA_TYPE",Column.VARCHAR);
t.addColumn("SQL_DATETIME_SUB",Column.INTEGER);
t.addColumn("CHAR_OCTET_LENGTH",Column.INTEGER);
t.addColumn("ORDINAL_POSITION",Column.VARCHAR);
t.addColumn("IS_NULLABLE",Column.VARCHAR);
t.createPrimaryKey();
for(int i=0;i<tTable.size();i++) {
Table table=(Table)tTable.elementAt(i);
int columns=table.getColumnCount();
for(int j=0;j<columns;j++) {
Object o[]=t.getNewRow();
o[2]=table.getName();
o[3]=table.getColumnName(j);
o[4]=new Short((short)table.getColumnType(j));
o[5]=Column.getType(table.getColumnType(j));
int nullable;
if(table.getColumnIsNullable(j)) {
nullable=DatabaseMetaData.columnNullable;
} else {
nullable=DatabaseMetaData.columnNoNulls;
}
o[10]=new Integer(nullable);
if(table.getIdentityColumn()==j) {
o[11]="IDENDITY";
}
t.insert(o,null);
}
}
return t;
} else if(name.equals("SYSTEM_COLUMNPRIVILEGES")) {
Table t=createTable(name);
t.addColumn("TABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("TABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("TABLE_NAME",Column.VARCHAR);
t.addColumn("COLUMN_NAME",Column.VARCHAR);
t.addColumn("GRANTOR",Column.VARCHAR);
t.addColumn("GRANTEE",Column.VARCHAR);
t.addColumn("PRIVILEGE",Column.VARCHAR);
t.addColumn("IS_GRANTABLE",Column.VARCHAR);
t.createPrimaryKey();
/*
// todo: get correct info
for(int i=0;i<tTable.size();i++) {
Table table=(Table)tTable.elementAt(i);
int columns=table.getColumnCount();
for(int j=0;j<columns;j++) {
Object o[]=t.getNewRow();
o[2]=table.getName();
o[3]=table.getColumnName(j);
o[4]="sa";
o[6]="FULL";
o[7]="NO";
t.insert(o,null);
}
}
*/
return t;
} else if(name.equals("SYSTEM_TABLEPRIVILEGES")) {
Table t=createTable(name);
t.addColumn("TABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("TABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("TABLE_NAME",Column.VARCHAR);
t.addColumn("GRANTOR",Column.VARCHAR);
t.addColumn("GRANTEE",Column.VARCHAR);
t.addColumn("PRIVILEGE",Column.VARCHAR);
t.addColumn("IS_GRANTABLE",Column.VARCHAR);
t.createPrimaryKey();
for(int i=0;i<tTable.size();i++) {
Table table=(Table)tTable.elementAt(i);
Object o[]=t.getNewRow();
o[2]=table.getName();
o[3]="sa";
o[5]="FULL";
t.insert(o,null);
}
return t;
} else if(name.equals("SYSTEM_BESTROWIDENTIFIER")) {
Table t=createTable(name);
t.addColumn("SCOPE",Column.SMALLINT);
t.addColumn("COLUMN_NAME",Column.VARCHAR);
t.addColumn("DATA_TYPE",Column.SMALLINT);
t.addColumn("TYPE_NAME",Column.VARCHAR);
t.addColumn(META_COLUMN_SIZE,Column.INTEGER);
t.addColumn(META_BUFFER_LENGTH,Column.INTEGER);
t.addColumn(META_DECIMAL_DIGITS,Column.SMALLINT);
t.addColumn("PSEUDO_COLUMN",Column.SMALLINT);
t.createPrimaryKey();
return t;
} else if(name.equals("SYSTEM_VERSIONCOLUMNS")) {
Table t=createTable(name);
t.addColumn("SCOPE",Column.INTEGER);
t.addColumn("COLUMN_NAME",Column.VARCHAR);
t.addColumn("DATA_TYPE",Column.SMALLINT);
t.addColumn("TYPE_NAME",Column.VARCHAR);
t.addColumn(META_COLUMN_SIZE,Column.SMALLINT);
t.addColumn(META_BUFFER_LENGTH,Column.INTEGER);
t.addColumn(META_DECIMAL_DIGITS,Column.SMALLINT);
t.addColumn("PSEUDO_COLUMN",Column.SMALLINT);
t.createPrimaryKey();
return t;
} else if(name.equals("SYSTEM_PRIMARYKEYS")) {
Table t=createTable(name);
t.addColumn("TABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("TABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("TABLE_NAME",Column.VARCHAR);
t.addColumn("COLUMN_NAME",Column.VARCHAR);
t.addColumn("KEY_SEQ",Column.SMALLINT);
t.addColumn("PK_NAME",Column.VARCHAR);
t.createPrimaryKey();
for(int i=0;i<tTable.size();i++) {
Table table=(Table)tTable.elementAt(i);
Index index=table.getIndex("SYSTEM_PK");
int cols[]=index.getColumns();
int len=cols.length;
for(int j=0;j<len;j++) {
Object o[]=t.getNewRow();
o[2]=table.getName();
o[3]=table.getColumnName(cols[j]);
o[4]=new Short((short)(j+1));
o[5]="SYSTEM_PK";
t.insert(o,null);
}
}
return t;
} else if(name.equals("SYSTEM_IMPORTEDKEYS")) {
Table t=createTable(name);
t.addColumn("PKTABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("PKTABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("PKTABLE_NAME",Column.VARCHAR);
t.addColumn("PKCOLUMN_NAME",Column.VARCHAR);
t.addColumn("FKTABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("FKTABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("FKTABLE_NAME",Column.VARCHAR);
t.addColumn("FKCOLUMN_NAME",Column.VARCHAR);
t.addColumn("KEY_SEQ",Column.SMALLINT);
t.addColumn("UPDATE_RULE",Column.SMALLINT);
t.addColumn("DELETE_RULE",Column.SMALLINT);
t.addColumn("FK_NAME",Column.VARCHAR);
t.addColumn("PK_NAME",Column.VARCHAR);
t.addColumn("DEFERRABILITY",Column.SMALLINT);
t.createPrimaryKey();
return t;
} else if(name.equals("SYSTEM_EXPORTEDKEYS")) {
Table t=createTable(name);
t.addColumn("PKTABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("PKTABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("PKTABLE_NAME",Column.VARCHAR);
t.addColumn("PKCOLUMN_NAME",Column.VARCHAR);
t.addColumn("FKTABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("FKTABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("FKTABLE_NAME",Column.VARCHAR);
t.addColumn("FKCOLUMN_NAME",Column.VARCHAR);
t.addColumn("KEY_SEQ",Column.SMALLINT);
t.addColumn("UPDATE_RULE",Column.SMALLINT);
t.addColumn("DELETE_RULE",Column.SMALLINT);
t.addColumn("FK_NAME",Column.VARCHAR);
t.addColumn("PK_NAME",Column.VARCHAR);
t.addColumn("DEFERRABILITY",Column.SMALLINT);
t.createPrimaryKey();
return t;
} else if(name.equals("SYSTEM_CROSSREFERENCE")) {
Table t=createTable(name);
t.addColumn("PKTABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("PKTABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("PKTABLE_NAME",Column.VARCHAR);
t.addColumn("PKCOLUMN_NAME",Column.VARCHAR);
t.addColumn("FKTABLE_"+META_CAT,Column.VARCHAR);
t.addColumn("FKTABLE_"+META_SCHEM,Column.VARCHAR);
t.addColumn("FKTABLE_NAME",Column.VARCHAR);
t.addColumn("FKCOLUMN_NAME",Column.VARCHAR);
t.addColumn("KEY_SEQ",Column.INTEGER);
t.addColumn("UPDATE_RULE",Column.SMALLINT);
t.addColumn("DELETE_RULE",Column.SMALLINT);
t.addColumn("FK_NAME",Column.VARCHAR);
t.addColumn("PK_NAME",Column.VARCHAR);
t.addColumn("DEFERRABILITY",Column.SMALLINT);
t.createPrimaryKey();
return t;
} else if(name.equals("SYSTEM_TYPEINFO")) {
Table t=createTable(name);
t.addColumn("TYPE_NAME",Column.VARCHAR);
t.addColumn("DATA_TYPE",Column.SMALLINT);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -