Java 类java.sql.DatabaseMetaData 实例源码

项目:ProyectoPacientes    文件:MetaDataRegressionTest.java   
/**
 * Tests fix for BUG#38367 - DatabaseMetaData dbMeta = this.conn.getMetaData();
 * this.rs = dbMeta.getProcedureColumns("test", null, "nullableParameterTest", null);
 * ...
 * Short columnNullable = new Short(this.rs.getShort(12));
 * assertTrue("Parameter " + columnName + " do not allow null arguments",
 * columnNullable.intValue() == java.sql.DatabaseMetaData.procedureNullable);
 * was failing for no good reason.
 * 
 * @throws Exception
 *             if the test fails.
 */

public void testBug38367() throws Exception {
    if (!versionMeetsMinimum(5, 0)) {
        return;
    }

    try {
        createProcedure("sptestBug38367",
                "(OUT nfact VARCHAR(100), IN ccuenta VARCHAR(100),\nOUT ffact VARCHAR(100),\nOUT fdoc VARCHAR(100))" + "\nBEGIN\nEND");

        DatabaseMetaData dbMeta = this.conn.getMetaData();
        this.rs = dbMeta.getProcedureColumns(this.conn.getCatalog(), null, "sptestBug38367", null);
        while (this.rs.next()) {
            String columnName = this.rs.getString(4);
            Short columnNullable = new Short(this.rs.getShort(12));
            assertTrue("Parameter " + columnName + " is not java.sql.DatabaseMetaData.procedureNullable.",
                    columnNullable.intValue() == java.sql.DatabaseMetaData.procedureNullable);
        }
    } finally {
    }
}
项目:ProyectoPacientes    文件:MetaDataRegressionTest.java   
/**
 * Tests fix for BUG#8803, 'DATA_TYPE' column from
 * DBMD.getBestRowIdentifier() causes ArrayIndexOutOfBoundsException when
 * accessed (and in fact, didn't return any value).
 * 
 * @throws Exception
 *             if the test fails.
 */
public void testBug8803() throws Exception {
    String tableName = "testBug8803";
    createTable(tableName, "(field1 INT NOT NULL PRIMARY KEY)");
    DatabaseMetaData metadata = this.conn.getMetaData();
    try {
        this.rs = metadata.getBestRowIdentifier(this.conn.getCatalog(), null, tableName, DatabaseMetaData.bestRowNotPseudo, true);

        assertTrue(this.rs.next());

        this.rs.getInt("DATA_TYPE"); // **** Fails here *****
    } finally {
        if (this.rs != null) {
            this.rs.close();

            this.rs = null;
        }
    }

}
项目:incubator-netbeans    文件:SchemaTest.java   
public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) {
    if (catalog == null) {
        if ("s1table1".equals(tableNamePattern)) {
            return JDBCStubUtil.columnsResultSet(
                    new String[] { "S1TABLE1_INTEGER_COL", "S1TABLE1_VARCHAR_COL", "S1TABLE1_FK_COL" },
                    new String[] { "INTEGER", "VARCAHR", "INTEGER" },
                    new int[] { Types.INTEGER, Types.VARCHAR, Types.INTEGER },
                    new int[] { 0, 20, 0 },
                    new int[] { 0, 0, 0 },
                    new int[] { DatabaseMetaData.columnNoNulls, DatabaseMetaData.columnNullable, DatabaseMetaData.columnNullable }
            );

        } else if ("s1table2".equals(tableNamePattern)) {
            return JDBCStubUtil.columnsResultSet(
                    new String[] { "S1TABLE2_INTEGER_COL" },
                    new String[] { "INTEGER" },
                    new int[] { Types.INTEGER },
                    new int[] { 0 },
                    new int[] { 0 },
                    new int[] { DatabaseMetaData.columnNoNulls }
            );
        }
    }
    return JDBCStubUtil.emptyResultSet();
}
项目:OpenVertretung    文件:MetaDataRegressionTest.java   
public void testQuotedGunk() throws Exception {
    createTable("testQuotedGunk", "(field1 int)");

    String quotedCatalog = "`" + this.conn.getCatalog() + "`";
    String unquotedCatalog = this.conn.getCatalog();

    DatabaseMetaData dbmd = this.conn.getMetaData();
    this.rs = dbmd.getTables(quotedCatalog, null, "testQuotedGunk", new String[] { "TABLE" });
    assertTrue(this.rs.next());
    this.rs = dbmd.getTables(unquotedCatalog, null, "testQuotedGunk", new String[] { "TABLE" });
    assertTrue(this.rs.next());
    this.rs = dbmd.getColumns(quotedCatalog, null, "testQuotedGunk", "field1");
    assertTrue(this.rs.next());
    this.rs = dbmd.getColumns(unquotedCatalog, null, "testQuotedGunk", "field1");
    assertTrue(this.rs.next());

}
项目:the-vigilantes    文件:MetadataTest.java   
/**
 * Tests the implementation of Information Schema for columns.
 */
public void testGetColumnsUsingInfoSchema() throws Exception {
    if (versionMeetsMinimum(5, 0, 7)) {
        createTable("t1", "(c1 char(1))");
        Properties props = new Properties();
        props.put("useInformationSchema", "true");
        Connection conn1 = null;
        try {
            conn1 = getConnectionWithProps(props);
            DatabaseMetaData metaData = conn1.getMetaData();
            this.rs = metaData.getColumns(null, null, "t1", null);
            this.rs.next();
            assertEquals("t1", this.rs.getString("TABLE_NAME"));
            assertEquals("c1", this.rs.getString("COLUMN_NAME"));
            assertEquals("CHAR", this.rs.getString("TYPE_NAME"));
            assertEquals("1", this.rs.getString("COLUMN_SIZE"));
        } finally {
            if (conn1 != null) {
                conn1.close();
            }
        }
    }
}
项目:ProyectoPacientes    文件:MetaDataRegressionTest.java   
/**
 * Tests whether or not unsigned columns are reported correctly in
 * DBMD.getColumns
 * 
 * @throws Exception
 */
public void testGetColumnsUnsigned() throws Exception {
    try {
        this.stmt.executeUpdate("DROP TABLE IF EXISTS testGetUnsignedCols");
        this.stmt.executeUpdate("CREATE TABLE testGetUnsignedCols (field1 BIGINT, field2 BIGINT UNSIGNED)");

        DatabaseMetaData dbmd = this.conn.getMetaData();

        this.rs = dbmd.getColumns(this.conn.getCatalog(), null, "testGetUnsignedCols", "%");

        assertTrue(this.rs.next());
        // This row doesn't have 'unsigned' attribute
        assertTrue(this.rs.next());
        assertTrue(this.rs.getString(6).toLowerCase().indexOf("unsigned") != -1);
    } finally {
        this.stmt.executeUpdate("DROP TABLE IF EXISTS testGetUnsignedCols");
    }
}
项目:BibliotecaPS    文件:MetaDataRegressionTest.java   
private void checkFunctionColumnTypeForBug68307(String testAgainst, DatabaseMetaData testDbMetaData) throws Exception {
    rs = testDbMetaData.getFunctionColumns(null, null, "testBug68307_%", "%");

    while (rs.next()) {
        String message = testAgainst + ", function <" + rs.getString("FUNCTION_NAME") + "." + rs.getString("COLUMN_NAME") + ">";
        if (rs.getString("COLUMN_NAME") == null || rs.getString("COLUMN_NAME").length() == 0) {
            assertEquals(message, DatabaseMetaData.functionReturn, rs.getShort("COLUMN_TYPE"));
        } else if (rs.getString("COLUMN_NAME").endsWith("_in")) {
            assertEquals(message, DatabaseMetaData.functionColumnIn, rs.getShort("COLUMN_TYPE"));
        } else if (rs.getString("COLUMN_NAME").endsWith("_inout")) {
            assertEquals(message, DatabaseMetaData.functionColumnInOut, rs.getShort("COLUMN_TYPE"));
        } else if (rs.getString("COLUMN_NAME").endsWith("_out")) {
            assertEquals(message, DatabaseMetaData.functionColumnOut, rs.getShort("COLUMN_TYPE"));
        } else {
            fail("Column '" + rs.getString("FUNCTION_NAME") + "." + rs.getString("COLUMN_NAME") + "' not expected within test case.");
        }
    }
}
项目:kinetica-client-jdbc    文件:JDBCSample.java   
/**
 * Retrieves a description of tables available for given connection.
 * 
 * @param conn
 *            The connection used to list the tables.
 * @throws SQLException
 *             if error happens while querying the data source.
 */
private static void showTables(Connection conn) throws SQLException {
    assert (conn != null);

    DatabaseMetaData meta = conn.getMetaData();

    ResultSet result = null;
    try {
        result = meta.getTables(null, null, null, null);
        printResultSet(result);
    } finally {
        if (result != null) {
            result.close();
        }
    }
}
项目:OpenVertretung    文件:MetaDataRegressionTest.java   
/**
 * Bug #43714 - useInformationSchema with DatabaseMetaData.getExportedKeys()
 * throws exception
 */
public void testBug43714() throws Exception {
    Connection c_IS = null;
    try {
        c_IS = getConnectionWithProps("useInformationSchema=true");
        DatabaseMetaData dbmd = c_IS.getMetaData();
        this.rs = dbmd.getExportedKeys("x", "y", "z");
    } finally {
        try {
            if (c_IS != null) {
                c_IS.close();
            }
        } catch (SQLException ex) {
        }
    }
}
项目:BibliotecaPS    文件:MetaDataRegressionTest.java   
/**
 * Tests fix for BUG#21215151 - DATABASEMETADATA.GETCATALOGS() FAILS TO SORT RESULTS.
 * 
 * DatabaseMetaData.GetCatalogs() relies on the results of 'SHOW DATABASES' which deliver a sorted list of databases except for 'information_schema' which
 * is always returned in the first position.
 * This test creates set of databases around the relative position of 'information_schema' and checks the ordering of the final ResultSet.
 * 
 * @throws Exception
 *             if the test fails.
 */
public void testBug21215151() throws Exception {
    createDatabase("z_testBug21215151");
    createDatabase("j_testBug21215151");
    createDatabase("h_testBug21215151");
    createDatabase("i_testBug21215151");
    createDatabase("a_testBug21215151");

    DatabaseMetaData dbmd = this.conn.getMetaData();
    this.rs = dbmd.getCatalogs();

    System.out.println("Catalogs:");
    System.out.println("--------------------------------------------------");
    while (this.rs.next()) {
        System.out.println("\t" + this.rs.getString(1));
    }
    this.rs.beforeFirst();

    // check the relative position of each element in the result set compared to the previous element.
    String previousDb = "";
    while (this.rs.next()) {
        assertTrue("'" + this.rs.getString(1) + "' is lexicographically lower than the previous catalog. Check the system output to see the catalogs list.",
                previousDb.compareTo(this.rs.getString(1)) < 0);
        previousDb = this.rs.getString(1);
    }
}
项目:gmds    文件:Utils.java   
/**
     *
     * @param dbmdJson
     * @param repo
     * @param tree
     * @param conn
     * @param clmnTree
     * @return
     * @throws IOException
     * @throws SQLException
     */
    public static ObjectId metaTreeCommit(ObjectJson dbmdJson, Repository repo, TreeFormatter tree, 
            Connection conn, Boolean clmnTree) throws IOException, SQLException {

        DatabaseMetaData dbmd = conn.getMetaData();
//        ObjectJson dbmdJson = new ObjectJson();
        String mapString = metaDbInfo(dbmd);
        ObjectInserter objectInserter = repo.newObjectInserter();
        ObjectId blobId = objectInserter.insert(Constants.OBJ_BLOB, mapString.getBytes());
        objectInserter.flush();

        tree.append(Consts.DATABASE, FileMode.REGULAR_FILE, blobId);
        Utils.putTableMeta(repo, conn, dbmd, objectInserter, tree, clmnTree);

        ObjectId treeId = objectInserter.insert(tree);
        objectInserter.flush();

        System.out.println("Tree ID: " + treeId.getName());

        return treeId;
    }
项目:syndesis    文件:SqlIconFileStore.java   
private boolean tableExists(Handle h, String tableName) {
    try {
        String tableToCheck = tableName;
        boolean caseSensitive = this.databaseKind == DatabaseKind.PostgreSQL;
        if (!caseSensitive) {
            tableToCheck = tableName.toUpperCase(Locale.ROOT);
        }
        DatabaseMetaData metaData = h.getConnection().getMetaData();

        try (ResultSet rs = metaData.getTables(null, null, tableToCheck, null)) {
            while (rs.next()) {
                String foundTable = rs.getString("TABLE_NAME");
                if (tableToCheck.equalsIgnoreCase(foundTable)) {
                    return true;
                }
            }
        }
        return false;
    } catch (SQLException ex) {
        throw IconDataAccessException.launderThrowable("Cannot check if the table " + tableName + " already exists", ex);
    }
}
项目:org.mybatis.generator.core-1.3.5    文件:DatabaseIntrospector.java   
/**
 * Instantiates a new database introspector.
 *
 * @param context
 *            the context
 * @param databaseMetaData
 *            the database meta data
 * @param javaTypeResolver
 *            the java type resolver
 * @param warnings
 *            the warnings
 */
public DatabaseIntrospector(Context context,
        DatabaseMetaData databaseMetaData,
        JavaTypeResolver javaTypeResolver, List<String> warnings) {
    super();
    this.context = context;
    this.databaseMetaData = databaseMetaData;
    this.javaTypeResolver = javaTypeResolver;
    this.warnings = warnings;
    logger = LogFactory.getLog(getClass());

    //获取数据库的版本信息
    try {
        DatabaseMetaData md = databaseMetaData.getConnection().getMetaData();
        databaseProductName = md.getDatabaseProductName().toUpperCase();
    } catch (SQLException se) {
        warnings.add("获取数据库版本失败:" + se.getMessage());
    }
}
项目:OpenVertretung    文件:MetadataTest.java   
/**
 * Tests the implementation of Information Schema for columns.
 */
public void testGetColumnsUsingInfoSchema() throws Exception {
    if (versionMeetsMinimum(5, 0, 7)) {
        createTable("t1", "(c1 char(1))");
        Properties props = new Properties();
        props.put("useInformationSchema", "true");
        Connection conn1 = null;
        try {
            conn1 = getConnectionWithProps(props);
            DatabaseMetaData metaData = conn1.getMetaData();
            this.rs = metaData.getColumns(null, null, "t1", null);
            this.rs.next();
            assertEquals("t1", this.rs.getString("TABLE_NAME"));
            assertEquals("c1", this.rs.getString("COLUMN_NAME"));
            assertEquals("CHAR", this.rs.getString("TYPE_NAME"));
            assertEquals("1", this.rs.getString("COLUMN_SIZE"));
        } finally {
            if (conn1 != null) {
                conn1.close();
            }
        }
    }
}
项目:BibliotecaPS    文件:MetadataTest.java   
/**
 * Tests the implementation of Information Schema for columns.
 */
public void testGetColumnsUsingInfoSchema() throws Exception {
    if (versionMeetsMinimum(5, 0, 7)) {
        createTable("t1", "(c1 char(1))");
        Properties props = new Properties();
        props.put("useInformationSchema", "true");
        Connection conn1 = null;
        try {
            conn1 = getConnectionWithProps(props);
            DatabaseMetaData metaData = conn1.getMetaData();
            this.rs = metaData.getColumns(null, null, "t1", null);
            this.rs.next();
            assertEquals("t1", this.rs.getString("TABLE_NAME"));
            assertEquals("c1", this.rs.getString("COLUMN_NAME"));
            assertEquals("CHAR", this.rs.getString("TYPE_NAME"));
            assertEquals("1", this.rs.getString("COLUMN_SIZE"));
        } finally {
            if (conn1 != null) {
                conn1.close();
            }
        }
    }
}
项目:the-vigilantes    文件:MetaDataRegressionTest.java   
/**
 * Tests fix for Bug#8812, DBMD.getIndexInfo() returning inverted values for
 * 'NON_UNIQUE' column.
 * 
 * @throws Exception
 *             if the test fails.
 */
public void testBug8812() throws Exception {
    String tableName = "testBug8812";

    try {
        createTable(tableName, "(field1 INT, field2 INT, INDEX(field1), UNIQUE INDEX(field2))");

        DatabaseMetaData dbmd = this.conn.getMetaData();
        this.rs = dbmd.getIndexInfo(this.conn.getCatalog(), null, tableName, true, false);
        assertTrue(this.rs.next()); // there should be one row that meets
        // this requirement
        assertEquals(this.rs.getBoolean("NON_UNIQUE"), false);

        this.rs = dbmd.getIndexInfo(this.conn.getCatalog(), null, tableName, false, false);
        assertTrue(this.rs.next()); // there should be two rows that meets
        // this requirement
        assertEquals(this.rs.getBoolean("NON_UNIQUE"), false);
        assertTrue(this.rs.next());
        assertEquals(this.rs.getBoolean("NON_UNIQUE"), true);

    } finally {
        dropTable(tableName);
    }
}
项目:incubator-netbeans    文件:DBTestBase.java   
protected final boolean columnInAnyIndex(String tablename, String colname)
        throws Exception {
    tablename = fixIdentifier(tablename);
    colname = fixIdentifier(colname);
    DatabaseMetaData md = getConnection().getMetaData();
    ResultSet rs = md.getIndexInfo(null, getSchema(), tablename, false, false);

    // printResults(rs, "columnInIndex(" + viewname + ", " + colname +
    //    ", " + indexname + ")");

    while ( rs.next() ) {
        String ixColName = rs.getString(9);
        if ( ixColName.equals(colname) ) {
            return true;
        }
    }

    return false;        
}
项目:BibliotecaPS    文件:PreparedStatement.java   
private void buildRewriteBatchedParams(String sql, MySQLConnection conn, DatabaseMetaData metadata, String encoding,
        SingleByteCharsetConverter converter) throws SQLException {
    this.valuesClause = extractValuesClause(sql, conn.getMetaData().getIdentifierQuoteString());
    String odkuClause = this.isOnDuplicateKeyUpdate ? sql.substring(this.locationOfOnDuplicateKeyUpdate) : null;

    String headSql = null;

    if (this.isOnDuplicateKeyUpdate) {
        headSql = sql.substring(0, this.locationOfOnDuplicateKeyUpdate);
    } else {
        headSql = sql;
    }

    this.batchHead = new ParseInfo(headSql, conn, metadata, encoding, converter, false);
    this.batchValues = new ParseInfo("," + this.valuesClause, conn, metadata, encoding, converter, false);
    this.batchODKUClause = null;

    if (odkuClause != null && odkuClause.length() > 0) {
        this.batchODKUClause = new ParseInfo("," + this.valuesClause + " " + odkuClause, conn, metadata, encoding, converter, false);
    }
}
项目:lams    文件:NativeJdbcExtractorAdapter.java   
/**
 * Check for a ConnectionProxy chain, then delegate to doGetNativeConnection.
 * <p>ConnectionProxy is used by Spring's TransactionAwareDataSourceProxy
 * and LazyConnectionDataSourceProxy. The target connection behind it is
 * typically one from a local connection pool, to be unwrapped by the
 * doGetNativeConnection implementation of a concrete subclass.
 * @see #doGetNativeConnection
 * @see org.springframework.jdbc.datasource.ConnectionProxy
 * @see org.springframework.jdbc.datasource.DataSourceUtils#getTargetConnection
 * @see org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy
 * @see org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy
 */
@Override
public Connection getNativeConnection(Connection con) throws SQLException {
    if (con == null) {
        return null;
    }
    Connection targetCon = DataSourceUtils.getTargetConnection(con);
    Connection nativeCon = doGetNativeConnection(targetCon);
    if (nativeCon == targetCon) {
        // We haven't received a different Connection, so we'll assume that there's
        // some additional proxying going on. Let's check whether we get something
        // different back from the DatabaseMetaData.getConnection() call.
        DatabaseMetaData metaData = targetCon.getMetaData();
        // The following check is only really there for mock Connections
        // which might not carry a DatabaseMetaData instance.
        if (metaData != null) {
            Connection metaCon = metaData.getConnection();
            if (metaCon != null && metaCon != targetCon) {
                // We've received a different Connection there:
                // Let's retry the native extraction process with it.
                nativeCon = doGetNativeConnection(metaCon);
            }
        }
    }
    return nativeCon;
}
项目:ChronoBike    文件:SQLClauseSPSupport.java   
public SQLClauseSPParamsDesc getStoredProcedureParamsList(DbConnectionBase dbConnection, String csStoredProcName)
{
    SQLClauseSPParamsDesc spParamsDesc = new SQLClauseSPParamsDesc();

    try
    {
        DatabaseMetaData dmd = dbConnection.getDbConnection().getMetaData();
        if (csStoredProcName.indexOf(".") != -1) // suppress the user if exists in the procedure
            csStoredProcName = csStoredProcName.substring(csStoredProcName.indexOf(".") + 1); 
        ResultSet rsParams = dmd.getProcedureColumns(null, dbConnection.getEnvironmentPrefix(), csStoredProcName.replace("_", "\\_"), "%");
        boolean b = true;
        while(rsParams.next() && b)
        {
            spParamsDesc.addAParam(rsParams);
        }
    }
    catch (SQLException e)
    {           
        return null;
    }

    return spParamsDesc;
}
项目:ProyectoPacientes    文件:MetaDataRegressionTest.java   
public void testBug31187() throws Exception {
    createTable("testBug31187", "(field1 int)");

    Connection nullCatConn = getConnectionWithProps("nullCatalogMeansCurrent=false");
    DatabaseMetaData dbmd = nullCatConn.getMetaData();
    ResultSet dbTblCols = dbmd.getColumns(null, null, "testBug31187", "%");

    boolean found = false;

    while (dbTblCols.next()) {
        String catalog = dbTblCols.getString("TABLE_CAT");
        String table = dbTblCols.getString("TABLE_NAME");
        boolean useLowerCaseTableNames = dbmd.storesLowerCaseIdentifiers();

        if (catalog.equals(nullCatConn.getCatalog())
                && (((useLowerCaseTableNames && "testBug31187".equalsIgnoreCase(table)) || "testBug31187".equals(table)))) {
            found = true;
        }
    }

    assertTrue("Didn't find any columns for table named 'testBug31187' in database " + this.conn.getCatalog(), found);
}
项目:bdf2    文件:EntityPR.java   
private String getColumnRemarks(String tableName,String columnName,DatabaseMetaData databaseMetaData) throws SQLException{
    String remarks=null;
    ResultSet rs=null;
    try{
        rs=databaseMetaData.getColumns(null, null, tableName,"%");
        while(rs.next()){
            String colName=rs.getString("COLUMN_NAME");
            if(columnName.equals(colName)){
                remarks=rs.getString("REMARKS");
                break;
            }
        }
    }finally{
        if(rs!=null)rs.close();
    }
    return remarks;
}
项目:ProyectoPacientes    文件:MetaDataRegressionTest.java   
private void checkMetadataForBug22613(Connection c) throws Exception {
    String maxValue = "a,bc,def,ghij";
    String maxValue2 = "1,2,3,4,1585,ONE,TWO,Y,N,THREE";

    DatabaseMetaData meta = c.getMetaData();
    this.rs = meta.getColumns(null, this.conn.getCatalog(), "bug22613", "s");
    this.rs.first();

    assertEquals(maxValue.length(), this.rs.getInt("COLUMN_SIZE"));

    this.rs = meta.getColumns(null, this.conn.getCatalog(), "bug22613", "s2");
    this.rs.first();

    assertEquals(maxValue2.length(), this.rs.getInt("COLUMN_SIZE"));

    this.rs = meta.getColumns(null, c.getCatalog(), "bug22613", "t");
    this.rs.first();

    assertEquals(4, this.rs.getInt("COLUMN_SIZE"));
}
项目:calcite-avatica    文件:MetaResultSetTest.java   
@Test public void testGetColumnPrivileges() throws SQLException {
  DatabaseMetaData metadata = getDatabaseMetadata();
  try (ResultSet rs = metadata.getColumnPrivileges(null, null, null, null)) {
    ResultSetMetaData rsMeta = rs.getMetaData();

    assertEquals(8, rsMeta.getColumnCount());
    assertColumn(rsMeta, 1, "TABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
    assertColumn(rsMeta, 2, "TABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
    assertColumn(rsMeta, 3, "TABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
    assertColumn(rsMeta, 4, "COLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
    assertColumn(rsMeta, 5, "GRANTOR", Types.VARCHAR, DatabaseMetaData.columnNullable);
    assertColumn(rsMeta, 6, "GRANTEE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
    assertColumn(rsMeta, 7, "PRIVILEGE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
    assertColumn(rsMeta, 8, "IS_GRANTABLE", Types.VARCHAR, DatabaseMetaData.columnNullable);
  }
}
项目:QDrill    文件:Drill2489CallsAfterCloseThrowExceptionsTest.java   
@BeforeClass
public static void setUpConnection() throws Exception {
  // (Note: Can't use JdbcTest's connect(...) for this test class.)
  final Connection connection =
      new Driver().connect( "jdbc:drill:zk=local", JdbcAssert.getDefaultProperties() );
  final Statement stmt = connection.createStatement();
  final ResultSet result =
      stmt.executeQuery( "SELECT * FROM INFORMATION_SCHEMA.CATALOGS" );
  result.next();
  final DatabaseMetaData dbmd = connection.getMetaData();

  result.close();
  closedResultSet = result;
  stmt.close();
  closedStatement = stmt;
  connection.close();
  closedConnection = connection;
  closedDatabaseMetaData = dbmd;
}
项目:BibliotecaPS    文件:MetaDataRegressionTest.java   
public void testBug44508() throws Exception {
    DatabaseMetaData dbmd = this.conn.getMetaData();

    this.rs = dbmd.getSuperTypes("", "", "");
    ResultSetMetaData rsmd = this.rs.getMetaData();

    assertEquals("TYPE_CAT", rsmd.getColumnName(1)); // Gives TABLE_CAT
    assertEquals("TYPE_SCHEM", rsmd.getColumnName(2)); // Gives TABLE_SCHEM
}
项目:OpenVertretung    文件:MetadataTest.java   
/**
 * Tests the implementation of Information Schema for tables.
 */
public void testGetTablesUsingInfoSchema() throws Exception {
    if (versionMeetsMinimum(5, 0, 7)) {
        createTable("`t1-1`", "(c1 char(1))");
        createTable("`t1-2`", "(c1 char(1))");
        createTable("`t2`", "(c1 char(1))");
        Set<String> tableNames = new HashSet<String>();
        tableNames.add("t1-1");
        tableNames.add("t1-2");
        Properties props = new Properties();
        props.put("useInformationSchema", "true");
        Connection conn1 = null;
        try {
            conn1 = getConnectionWithProps(props);
            DatabaseMetaData metaData = conn1.getMetaData();
            // pattern matching for table name
            this.rs = metaData.getTables(null, null, "t1-_", null);
            while (this.rs.next()) {
                assertTrue(tableNames.remove(this.rs.getString("TABLE_NAME")));
            }
            assertTrue(tableNames.isEmpty());
        } finally {
            if (conn1 != null) {
                conn1.close();
            }
        }
    }
}
项目:BibliotecaPS    文件:MetaDataRegressionTest.java   
/**
 * Test fix for BUG#68098 - DatabaseMetaData.getIndexInfo sorts results incorrectly.
 * 
 * @throws Exception
 *             if the test fails.
 */
public void testBug68098() throws Exception {
    String[] testStepDescription = new String[] { "MySQL MetaData", "I__S MetaData" };
    Connection connUseIS = getConnectionWithProps("useInformationSchema=true");
    Connection[] testConnections = new Connection[] { this.conn, connUseIS };
    String[] expectedIndexesOrder = new String[] { "index_1", "index_1", "index_3", "PRIMARY", "index_2", "index_2", "index_4" };

    this.stmt.execute("DROP TABLE IF EXISTS testBug68098");

    createTable("testBug68098", "(column_1 INT NOT NULL, column_2 INT NOT NULL, column_3 INT NOT NULL, PRIMARY KEY (column_1))");

    this.stmt.execute("CREATE INDEX index_4 ON testBug68098 (column_2)");
    this.stmt.execute("CREATE UNIQUE INDEX index_3 ON testBug68098 (column_3)");
    this.stmt.execute("CREATE INDEX index_2 ON testBug68098 (column_2, column_1)");
    this.stmt.execute("CREATE UNIQUE INDEX index_1 ON testBug68098 (column_3, column_2)");

    for (int i = 0; i < testStepDescription.length; i++) {
        DatabaseMetaData testDbMetaData = testConnections[i].getMetaData();
        this.rs = testDbMetaData.getIndexInfo(null, null, "testBug68098", false, false);
        int ind = 0;
        while (this.rs.next()) {
            assertEquals(testStepDescription[i] + ", sort order is wrong", expectedIndexesOrder[ind++], this.rs.getString("INDEX_NAME"));
        }
        this.rs.close();
    }

    connUseIS.close();
}
项目:aries-jpa    文件:DummyDataSource.java   
private Object proxyClasses(ClassLoader classLoader, Class<?> type) {
    if (type == DatabaseMetaData.class) {
        return createProxy(classLoader, DatabaseMetaData.class);
    }
    if (type == ResultSet.class) {
        return createProxy(classLoader, ResultSet.class);
    }
    if (type == Statement.class) {
        return createProxy(classLoader, PreparedStatement.class);
    }
    return null;
}
项目:syndesis    文件:DatabaseMetaDataHelper.java   
static List<SqlParam> getJDBCInfoByColumnOrder(final DatabaseMetaData meta, String catalog, 
        String schema, String tableName, final List<SqlParam> params) throws SQLException {
    List<SqlParam> paramList = new ArrayList<>();
    ResultSet columnSet = meta.getColumns(catalog, "SA", tableName, null);
    for (int i=0; i<params.size(); i++) {
        columnSet.next();
        SqlParam param = params.get(i);
        param.setColumn(columnSet.getString("COLUMN_NAME"));
        param.setJdbcType(JDBCType.valueOf(columnSet.getInt("DATA_TYPE")));
        paramList.add(param);
    }
    return paramList;
}
项目:holon-datastore-jdbc    文件:JdbcDatastoreUtils.java   
/**
 * Get the primary key {@link Path}s of given <code>table</code> using database metadata, if available.
 * @param dialect Jdbc dialect
 * @param table Table name for which to obtain th primary key
 * @param connection Connection to use
 * @return The table primary key {@link Path}s, empty if not available
 * @throws SQLException Error accessing the database
 */
public static Optional<Path<?>[]> getPrimaryKey(JdbcDialect dialect, String table, Connection connection)
        throws SQLException {
    ObjectUtils.argumentNotNull(table, "Table name must be not null");
    ObjectUtils.argumentNotNull(connection, "Connection name must be not null");

    final String tableName = dialect.getTableName(table);

    List<OrderedPath> paths = new ArrayList<>();

    DatabaseMetaData databaseMetaData = connection.getMetaData();

    try (ResultSet resultSet = databaseMetaData.getPrimaryKeys(null, null, tableName)) {
        while (resultSet.next()) {
            final String columnName = resultSet.getString("COLUMN_NAME");
            OrderedPath op = new OrderedPath();
            op.path = Path.of(columnName, getColumnType(databaseMetaData, tableName, columnName));
            op.sequence = resultSet.getShort("KEY_SEQ");
            paths.add(op);
        }
    }

    if (!paths.isEmpty()) {
        Collections.sort(paths);
        return Optional
                .of(paths.stream().map(p -> p.path).collect(Collectors.toList()).toArray(new Path[paths.size()]));
    }

    return Optional.empty();
}
项目:holon-datastore-jdbc    文件:MySQLDialect.java   
@Override
public void init(JdbcDatastore datastore) throws SQLException {
    datastore.withConnection(c -> {
        DatabaseMetaData databaseMetaData = c.getMetaData();
        supportsGeneratedKeys = databaseMetaData.supportsGetGeneratedKeys();
        generatedKeyAlwaysReturned = databaseMetaData.generatedKeyAlwaysReturned();
        supportsLikeEscapeClause = databaseMetaData.supportsLikeEscapeClause();
        return null;
    });
}
项目:elastic-job-cloud    文件:JobEventRdbStorage.java   
private void createJobExecutionTableAndIndexIfNeeded(final Connection conn) throws SQLException {
    DatabaseMetaData dbMetaData = conn.getMetaData();
    try (ResultSet resultSet = dbMetaData.getTables(null, null, TABLE_JOB_EXECUTION_LOG, new String[]{"TABLE"})) {
        if (!resultSet.next()) {
            createJobExecutionTable(conn);
        }
    }
}
项目:incubator-netbeans    文件:JDBCUtils.java   
public static Nullable getColumnNullable(int dbmdColumnNullable) {
    switch (dbmdColumnNullable) {
        case DatabaseMetaData.columnNoNulls:
            return Nullable.NOT_NULLABLE;
        case DatabaseMetaData.columnNullable:
            return Nullable.NULLABLE;
        case DatabaseMetaData.columnNullableUnknown:
        default:
            return Nullable.UNKNOWN;
    }
}
项目:linkifier    文件:Table.java   
public void getUniqueConstraint(DatabaseMetaData metaData, String databaseName, String schemaName, String tableName) throws SQLException {
    try (ResultSet result = metaData.getIndexInfo(databaseName, schemaName, tableName, true, true)) {
        while (result.next()) {
            for (Column col : columnList) {
                if (col.getName().equals(result.getString(9))) {
                    col.setUniqueConstraint(true);
                }
            }
        }
    }
}
项目:incubator-netbeans    文件:OracleSchema.java   
@Override
protected void createTables() {
    LOGGER.log(Level.FINE, "Initializing tables in {0}", this);
    Map<String, Table> newTables = new LinkedHashMap<String, Table>();
    try {
        DatabaseMetaData dmd = jdbcCatalog.getJDBCMetadata().getDmd();
        Set<String> recycleBinTables = getRecycleBinObjects(dmd, "TABLE"); // NOI18N
        ResultSet rs = dmd.getTables(jdbcCatalog.getName(), name, "%", new String[]{"TABLE"}); // NOI18N
        if (rs != null) {
            try {
                while (rs.next()) {
                    String type = MetadataUtilities.trimmed(rs.getString("TABLE_TYPE")); //NOI18N
                    String tableName = rs.getString("TABLE_NAME"); // NOI18N
                    if (!recycleBinTables.contains(tableName)) {
                        Table table = createJDBCTable(tableName, type.contains("SYSTEM")).getTable(); //NOI18N
                        newTables.put(tableName, table);
                        LOGGER.log(Level.FINE, "Created table {0}", table);
                    } else {
                        LOGGER.log(Level.FINE, "Ignoring recycle bin table ''{0}''", tableName);
                    }
                }
            } finally {
                rs.close();
            }
        }
    } catch (SQLException e) {
        throw new MetadataException(e);
    }
    tables = Collections.unmodifiableMap(newTables);
}
项目:vertx-generator    文件:DBUtil.java   
/**
 * 获得主键名称
 * 
 * @param config
 * @param tableName
 * @return
 * @throws Exception
 */
public static String getTablePrimaryKey(DatabaseConfig config, String tableName) throws Exception {
    Connection conn = getConnection(config);
    DatabaseMetaData md = conn.getMetaData();
    ResultSet rs = md.getPrimaryKeys(null, null, tableName);
    while (rs.next()) {
        return rs.getString("COLUMN_NAME");
    }
    return null;
}
项目:the-vigilantes    文件:MetaDataRegressionTest.java   
public void testBug44508() throws Exception {
    DatabaseMetaData dbmd = this.conn.getMetaData();

    this.rs = dbmd.getSuperTypes("", "", "");
    ResultSetMetaData rsmd = this.rs.getMetaData();

    assertEquals("TYPE_CAT", rsmd.getColumnName(1)); // Gives TABLE_CAT
    assertEquals("TYPE_SCHEM", rsmd.getColumnName(2)); // Gives TABLE_SCHEM
}
项目:the-vigilantes    文件:MetaDataRegressionTest.java   
/**
 * Tests fix for BUG#68307 - getFunctionColumns() returns incorrect "COLUMN_TYPE" information. This JDBC4
 * feature required some changes in method getProcedureColumns().
 * 
 * @throws Exception
 *             if the test fails.
 */
public void testBug68307() throws Exception {
    String[] testStepDescription = new String[] { "MySQL MetaData", "I__S MetaData" };
    Connection connUseIS = getConnectionWithProps("useInformationSchema=true");
    Connection[] testConnections = new Connection[] { this.conn, connUseIS };

    createFunction("testBug68307_func", "(func_param_in INT) RETURNS INT DETERMINISTIC RETURN 1");

    createProcedure("testBug68307_proc", "(IN proc_param_in INT, OUT proc_param_out INT, INOUT proc_param_inout INT) SELECT 1");

    for (int i = 0; i < testStepDescription.length; i++) {
        DatabaseMetaData testDbMetaData = testConnections[i].getMetaData();
        this.rs = testDbMetaData.getProcedureColumns(null, null, "testBug68307_%", "%");

        while (this.rs.next()) {
            String message = testStepDescription[i] + ", procedure/function <" + this.rs.getString("PROCEDURE_NAME") + "."
                    + this.rs.getString("COLUMN_NAME") + ">";
            if (this.rs.getString("COLUMN_NAME") == null || this.rs.getString("COLUMN_NAME").length() == 0) {
                assertEquals(message, DatabaseMetaData.procedureColumnReturn, this.rs.getShort("COLUMN_TYPE"));
            } else if (this.rs.getString("COLUMN_NAME").endsWith("_in")) {
                assertEquals(message, DatabaseMetaData.procedureColumnIn, this.rs.getShort("COLUMN_TYPE"));
            } else if (this.rs.getString("COLUMN_NAME").endsWith("_inout")) {
                assertEquals(message, DatabaseMetaData.procedureColumnInOut, this.rs.getShort("COLUMN_TYPE"));
            } else if (this.rs.getString("COLUMN_NAME").endsWith("_out")) {
                assertEquals(message, DatabaseMetaData.procedureColumnOut, this.rs.getShort("COLUMN_TYPE"));
            } else {
                fail(testStepDescription[i] + ", column '" + this.rs.getString("FUNCTION_NAME") + "." + this.rs.getString("COLUMN_NAME")
                        + "' not expected within test case.");
            }
        }

        this.rs.close();
    }
}
项目:the-vigilantes    文件:MetaDataRegressionTest.java   
private void checkMetaDataInfoForBug17248345(Connection testConn) throws Exception {
    DatabaseMetaData testDbMetaData = testConn.getMetaData();
    ResultSet rsMD;
    boolean useInfoSchema = ((ConnectionProperties) testConn).getUseInformationSchema();
    boolean getProcRetFunc = ((ConnectionProperties) testConn).getGetProceduresReturnsFunctions();
    String stepDescription = "Prop. useInfoSchema(" + (useInfoSchema ? 1 : 0) + ") + getProcRetFunc(" + (getProcRetFunc ? 1 : 0) + "):";
    String sd;

    // getProcedures() must return 2 records, even if getProceduresReturnsFunctions is false once this flag only
    // applies to JDBC4. When exists a procedure and a function with same name, function is returned first.
    sd = stepDescription + " getProcedures() ";
    rsMD = testDbMetaData.getProcedures(null, null, "testBug17248345");
    assertTrue(sd + "1st of 2 rows expected.", rsMD.next());
    assertEquals(sd + " -> PROCEDURE_NAME", "testBug17248345", rsMD.getString("PROCEDURE_NAME"));
    assertTrue(sd + "2nd of 2 rows expected.", rsMD.next());
    assertEquals(sd + " -> PROCEDURE_NAME", "testBug17248345", rsMD.getString("PROCEDURE_NAME"));
    assertFalse(sd + "no more rows expected.", rsMD.next());

    // getProcedureColumns() must return 3 records, even if getProceduresReturnsFunctions is false once this flag
    // only applies to JDBC4. When exists a procedure and a function with same name, function is returned first.
    sd = stepDescription + " getProcedureColumns() ";
    rsMD = testDbMetaData.getProcedureColumns(null, null, "testBug17248345", "%");
    assertTrue(sd + "1st of 3 rows expected.", rsMD.next());
    assertEquals(sd + " -> PROCEDURE_NAME", "testBug17248345", rsMD.getString("PROCEDURE_NAME"));
    assertEquals(sd + " -> COLUMN_NAME", "", rsMD.getString("COLUMN_NAME"));
    assertTrue(sd + "2nd of 3 rows expected.", rsMD.next());
    assertEquals(sd + " -> PROCEDURE_NAME", "testBug17248345", rsMD.getString("PROCEDURE_NAME"));
    assertEquals(sd + " -> COLUMN_NAME", "funccol", rsMD.getString("COLUMN_NAME"));
    assertTrue(sd + "3rd of 3 rows expected.", rsMD.next());
    assertEquals(sd + " -> PROCEDURE_NAME", "testBug17248345", rsMD.getString("PROCEDURE_NAME"));
    assertEquals(sd + " -> COLUMN_NAME", "proccol", rsMD.getString("COLUMN_NAME"));
    assertFalse(sd + "no more rows expected.", rsMD.next());
}