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

📄 testmetadata.java

📁 非常棒的java数据库
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        checkFalse(rs.next());
        stat.execute("DROP TABLE TEST");
    }

    private void testProcedureColumns() throws Exception {
        DatabaseMetaData meta = conn.getMetaData();
        ResultSet rs;
        Statement stat = conn.createStatement();
        stat.execute("CREATE ALIAS PROP FOR \"java.lang.System.getProperty(java.lang.String)\"");
        stat.execute("CREATE ALIAS EXIT FOR \"java.lang.System.exit\"");
        rs = meta.getProcedures(null, null, "EX%");
        testResultSetMeta(rs, 8, new String[] { "PROCEDURE_CAT", "PROCEDURE_SCHEM", "PROCEDURE_NAME",
                "NUM_INPUT_PARAMS", "NUM_OUTPUT_PARAMS", "NUM_RESULT_SETS", "REMARKS", "PROCEDURE_TYPE" }, new int[] {
                Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.INTEGER, Types.INTEGER,
                Types.VARCHAR, Types.SMALLINT }, null, null);
        testResultSetOrdered(rs, new String[][] { { catalog, Constants.SCHEMA_MAIN, "EXIT", "0", "0", "0", "",
                "" + DatabaseMetaData.procedureNoResult }, });
        rs = meta.getProcedureColumns(null, null, null, null);
        testResultSetMeta(rs, 13,
                new String[] { "PROCEDURE_CAT", "PROCEDURE_SCHEM", "PROCEDURE_NAME", "COLUMN_NAME", "COLUMN_TYPE",
                        "DATA_TYPE", "TYPE_NAME", "PRECISION", "LENGTH", "SCALE", "RADIX", "NULLABLE", "REMARKS" },
                new int[] { Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.SMALLINT, Types.INTEGER,
                        Types.VARCHAR, Types.INTEGER, Types.INTEGER, Types.SMALLINT, Types.SMALLINT, Types.SMALLINT,
                        Types.VARCHAR }, null, null);
        testResultSetOrdered(rs, new String[][] {
                { catalog, Constants.SCHEMA_MAIN, "EXIT", "P1", "" + DatabaseMetaData.procedureColumnIn,
                        "" + Types.INTEGER, "INTEGER", "10", "10", "0", "10", "" + DatabaseMetaData.procedureNoNulls },
                { catalog, Constants.SCHEMA_MAIN, "PROP", "P1", "" + DatabaseMetaData.procedureColumnIn,
                        "" + Types.VARCHAR, "VARCHAR", "" + Integer.MAX_VALUE, "" + Integer.MAX_VALUE, "0", "10",
                        "" + DatabaseMetaData.procedureNullable }, });
        stat.execute("DROP ALIAS EXIT");
        stat.execute("DROP ALIAS PROP");
    }

    private void testCrossReferences() throws Exception {
        DatabaseMetaData meta = conn.getMetaData();
        ResultSet rs;
        Statement stat = conn.createStatement();
        stat.execute("CREATE TABLE PARENT(A INT, B INT, PRIMARY KEY(A, B))");
        stat
                .execute("CREATE TABLE CHILD(ID INT PRIMARY KEY, PA INT, PB INT, CONSTRAINT AB FOREIGN KEY(PA, PB) REFERENCES PARENT(A, B))");
        rs = meta.getCrossReference(null, "PUBLIC", "PARENT", null, "PUBLIC", "CHILD");
        checkCrossRef(rs);
        rs = meta.getImportedKeys(null, "PUBLIC", "CHILD");
        checkCrossRef(rs);
        rs = meta.getExportedKeys(null, "PUBLIC", "PARENT");
        checkCrossRef(rs);
        stat.execute("DROP TABLE PARENT");
        stat.execute("DROP TABLE CHILD");
    }

    private void checkCrossRef(ResultSet rs) throws Exception {
        testResultSetMeta(rs, 14, new String[] { "PKTABLE_CAT", "PKTABLE_SCHEM", "PKTABLE_NAME", "PKCOLUMN_NAME",
                "FKTABLE_CAT", "FKTABLE_SCHEM", "FKTABLE_NAME", "FKCOLUMN_NAME", "KEY_SEQ", "UPDATE_RULE",
                "DELETE_RULE", "FK_NAME", "PK_NAME", "DEFERRABILITY" }, new int[] { Types.VARCHAR, Types.VARCHAR,
                Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR,
                Types.SMALLINT, Types.SMALLINT, Types.SMALLINT, Types.VARCHAR, Types.VARCHAR, Types.SMALLINT }, null,
                null);
        testResultSetOrdered(rs, new String[][] {
                { catalog, Constants.SCHEMA_MAIN, "PARENT", "A", catalog, Constants.SCHEMA_MAIN, "CHILD", "PA", "1",
                        "" + DatabaseMetaData.importedKeyRestrict, "" + DatabaseMetaData.importedKeyRestrict, "AB",
                        null, "" + DatabaseMetaData.importedKeyNotDeferrable },
                { catalog, Constants.SCHEMA_MAIN, "PARENT", "B", catalog, Constants.SCHEMA_MAIN, "CHILD", "PB", "2",
                        "" + DatabaseMetaData.importedKeyRestrict, "" + DatabaseMetaData.importedKeyRestrict, "AB",
                        null, "" + DatabaseMetaData.importedKeyNotDeferrable } });
    }

    void testTempTable() throws Exception {
        Connection conn = getConnection("metaData");
        Statement stat = conn.createStatement();
        stat.execute("DROP TABLE IF EXISTS TEST_TEMP");
        stat.execute("CREATE TEMP TABLE TEST_TEMP(ID INT PRIMARY KEY, NAME VARCHAR(255))");
        stat.execute("CREATE INDEX IDX_NAME ON TEST_TEMP(NAME)");
        stat.execute("ALTER TABLE TEST_TEMP ADD FOREIGN KEY(ID) REFERENCES(ID)");
        conn.close();

        conn = getConnection("metaData");
        stat = conn.createStatement();
        stat.execute("CREATE TEMP TABLE TEST_TEMP(ID INT PRIMARY KEY, NAME VARCHAR(255))");
        ResultSet rs = stat.executeQuery("SELECT STORAGE_TYPE FROM "
                + "INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='TEST_TEMP'");
        rs.next();
        check(rs.getString("STORAGE_TYPE"), "GLOBAL TEMPORARY");
        stat.execute("DROP TABLE IF EXISTS TEST_TEMP");
        conn.close();
    }

    void testStatic() throws Exception {
        Driver dr = (Driver) Class.forName("org.h2.Driver").newInstance();

        check(dr.getMajorVersion(), meta.getDriverMajorVersion());
        check(dr.getMinorVersion(), meta.getDriverMinorVersion());
        check(dr.jdbcCompliant());

        check(dr.getPropertyInfo(null, null).length, 0);
        check(dr.connect("jdbc:test:false", null) == null);

        check(meta.getNumericFunctions().length() > 0);
        check(meta.getStringFunctions().length() > 0);
        check(meta.getSystemFunctions().length() > 0);
        check(meta.getTimeDateFunctions().length() > 0);

        check(meta.allProceduresAreCallable());
        check(meta.allTablesAreSelectable());
        check(meta.dataDefinitionCausesTransactionCommit());
        checkFalse(meta.dataDefinitionIgnoredInTransactions());
        checkFalse(meta.deletesAreDetected(ResultSet.TYPE_FORWARD_ONLY));
        checkFalse(meta.deletesAreDetected(ResultSet.TYPE_SCROLL_INSENSITIVE));
        checkFalse(meta.deletesAreDetected(ResultSet.TYPE_SCROLL_SENSITIVE));
        checkFalse(meta.doesMaxRowSizeIncludeBlobs());
        check(meta.getCatalogSeparator(), ".");
        check(meta.getCatalogTerm(), "catalog");
        check(meta.getConnection() == conn);
        if (config.jdk14) {
            String versionStart = meta.getDatabaseMajorVersion() + "." + meta.getDatabaseMinorVersion();
            check(meta.getDatabaseProductVersion().startsWith(versionStart));
            check(meta.getDriverMajorVersion(), meta.getDatabaseMajorVersion());
            check(meta.getDriverMinorVersion(), meta.getDatabaseMinorVersion());
            check(meta.getJDBCMajorVersion(), 3);
            check(meta.getJDBCMinorVersion(), 0);
        }
        check(meta.getDatabaseProductName(), "H2");
        check(meta.getDefaultTransactionIsolation(), Connection.TRANSACTION_READ_COMMITTED);
        check(meta.getDriverName(), "H2 JDBC Driver");

        String versionStart = meta.getDriverMajorVersion() + "." + meta.getDriverMinorVersion();
        check(meta.getDriverVersion().startsWith(versionStart));
        check(meta.getExtraNameCharacters(), "");
        check(meta.getIdentifierQuoteString(), "\"");
        check(meta.getMaxBinaryLiteralLength(), 0);
        check(meta.getMaxCatalogNameLength(), 0);
        check(meta.getMaxCharLiteralLength(), 0);
        check(meta.getMaxColumnNameLength(), 0);
        check(meta.getMaxColumnsInGroupBy(), 0);
        check(meta.getMaxColumnsInIndex(), 0);
        check(meta.getMaxColumnsInOrderBy(), 0);
        check(meta.getMaxColumnsInSelect(), 0);
        check(meta.getMaxColumnsInTable(), 0);
        check(meta.getMaxConnections(), 0);
        check(meta.getMaxCursorNameLength(), 0);
        check(meta.getMaxIndexLength(), 0);
        check(meta.getMaxProcedureNameLength(), 0);
        check(meta.getMaxRowSize(), 0);
        check(meta.getMaxSchemaNameLength(), 0);
        check(meta.getMaxStatementLength(), 0);
        check(meta.getMaxStatements(), 0);
        check(meta.getMaxTableNameLength(), 0);
        check(meta.getMaxTablesInSelect(), 0);
        check(meta.getMaxUserNameLength(), 0);
        check(meta.getProcedureTerm(), "procedure");
        if (config.jdk14) {
            check(meta.getResultSetHoldability(), ResultSet.CLOSE_CURSORS_AT_COMMIT);
            check(meta.getSQLStateType(), DatabaseMetaData.sqlStateSQL99);
            checkFalse(meta.locatorsUpdateCopy());
        }
        check(meta.getSchemaTerm(), "schema");
        check(meta.getSearchStringEscape(), "\\");
        check(meta.getSQLKeywords(), "");

        check(meta.getURL().startsWith("jdbc:h2:"));
        check(meta.getUserName().length() > 1);
        checkFalse(meta.insertsAreDetected(ResultSet.TYPE_FORWARD_ONLY));
        checkFalse(meta.insertsAreDetected(ResultSet.TYPE_SCROLL_INSENSITIVE));
        checkFalse(meta.insertsAreDetected(ResultSet.TYPE_SCROLL_SENSITIVE));
        check(meta.isCatalogAtStart());
        checkFalse(meta.isReadOnly());
        check(meta.nullPlusNonNullIsNull());
        checkFalse(meta.nullsAreSortedAtEnd());
        checkFalse(meta.nullsAreSortedAtStart());
        checkFalse(meta.nullsAreSortedHigh());
        check(meta.nullsAreSortedLow());
        checkFalse(meta.othersDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY));
        checkFalse(meta.othersDeletesAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
        checkFalse(meta.othersDeletesAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
        checkFalse(meta.othersInsertsAreVisible(ResultSet.TYPE_FORWARD_ONLY));
        checkFalse(meta.othersInsertsAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
        checkFalse(meta.othersInsertsAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
        checkFalse(meta.othersUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY));
        checkFalse(meta.othersUpdatesAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
        checkFalse(meta.othersUpdatesAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
        checkFalse(meta.ownDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY));
        checkFalse(meta.ownDeletesAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
        checkFalse(meta.ownDeletesAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
        checkFalse(meta.ownInsertsAreVisible(ResultSet.TYPE_FORWARD_ONLY));
        checkFalse(meta.ownInsertsAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
        checkFalse(meta.ownInsertsAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
        checkFalse(meta.ownUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY));
        checkFalse(meta.ownUpdatesAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
        checkFalse(meta.ownUpdatesAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
        checkFalse(meta.storesLowerCaseIdentifiers());
        checkFalse(meta.storesLowerCaseQuotedIdentifiers());
        checkFalse(meta.storesMixedCaseIdentifiers());
        check(meta.storesMixedCaseQuotedIdentifiers());
        check(meta.storesUpperCaseIdentifiers());
        checkFalse(meta.storesUpperCaseQuotedIdentifiers());
        check(meta.supportsAlterTableWithAddColumn());
        check(meta.supportsAlterTableWithDropColumn());
        check(meta.supportsANSI92EntryLevelSQL());
        checkFalse(meta.supportsANSI92IntermediateSQL());
        checkFalse(meta.supportsANSI92FullSQL());
        check(meta.supportsBatchUpdates());
        check(meta.supportsCatalogsInDataManipulation());
        check(meta.supportsCatalogsInIndexDefinitions());
        check(meta.supportsCatalogsInPrivilegeDefinitions());
        checkFalse(meta.supportsCatalogsInProcedureCalls());
        check(meta.supportsCatalogsInTableDefinitions());
        check(meta.supportsColumnAliasing());
        check(meta.supportsConvert());
        check(meta.supportsConvert(Types.INTEGER, Types.VARCHAR));
        check(meta.supportsCoreSQLGrammar());
        check(meta.supportsCorrelatedSubqueries());
        checkFalse(meta.supportsDataDefinitionAndDataManipulationTransactions());
        check(meta.supportsDataManipulationTransactionsOnly());
        checkFalse(meta.supportsDifferentTableCorrelationNames());
        check(meta.supportsExpressionsInOrderBy());
        checkFalse(meta.supportsExtendedSQLGrammar());
        checkFalse(meta.supportsFullOuterJoins());
        if (config.jdk14) {
            check(meta.supportsGetGeneratedKeys());
            check(meta.supportsMultipleOpenResults());
            checkFalse(meta.supportsNamedParameters());
        }
        check(meta.supportsGroupBy());
        check(meta.supportsGroupByBeyondSelect());
        check(meta.supportsGroupByUnrelated());
        check(meta.supportsIntegrityEnhancementFacility());
        check(meta.supportsLikeEscapeClause());
        check(meta.supportsLimitedOuterJoins());
        check(meta.supportsMinimumSQLGrammar());

⌨️ 快捷键说明

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