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

📄 databaseinformation.java

📁 一个可以在applet窗体上持行sql语句并显示返回结果的程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * 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 + -