Refine search
private static void appendDataBaseVersion(StringBuilder result, Connection connection) throws SQLException { final DatabaseMetaData metaData = connection.getMetaData(); // Sécurité: pour l'instant on n'indique pas metaData.getUserName() result.append(metaData.getURL()).append('\n'); result.append(metaData.getDatabaseProductName()).append(", ") .append(metaData.getDatabaseProductVersion()).append('\n'); result.append("Driver JDBC:\n").append(metaData.getDriverName()).append(", ") .append(metaData.getDriverVersion()); }
DatabaseMetaData dbmd = ps.getConnection().getMetaData(); String jdbcDriverName = dbmd.getDriverName(); String databaseProductName = dbmd.getDatabaseProductName(); if (databaseProductName.startsWith("Informix") ||
@Override public String getDbmsInfoString(Dbms dbms) throws SQLException { try (final Connection conn = connectionPool.getConnection(dbms)) { final DatabaseMetaData md = conn.getMetaData(); return md.getDatabaseProductName() + ", " + md.getDatabaseProductVersion() + ", " + md.getDriverName() + " " + md.getDriverVersion() + ", JDBC version " + md.getJDBCMajorVersion() + "." + md.getJDBCMinorVersion(); } }
private static boolean doTableExists(String table, Connection connection) { String schema = null; try { // Using H2 with a JDBC TCP connection is throwing an exception // See org.h2.engine.SessionRemote#getCurrentSchemaName() if (!"H2 JDBC Driver".equals(connection.getMetaData().getDriverName())) { schema = connection.getSchema(); } } catch (SQLException e) { Loggers.get(DatabaseUtils.class).warn("Fail to determine schema. Keeping it null for searching tables", e); } // table type is used to speed-up Oracle by removing introspection of system tables and aliases. try (ResultSet rs = connection.getMetaData().getTables(connection.getCatalog(), schema, table, TABLE_TYPE)) { while (rs.next()) { String name = rs.getString("TABLE_NAME"); if (table.equalsIgnoreCase(name)) { return true; } } return false; } catch (SQLException e) { throw wrapSqlException(e, "Can not check that table %s exists", table); } }
@Override public String getDbmsInfoString(Dbms dbms) throws SQLException { try (final Connection conn = getConnection(dbms)) { final DatabaseMetaData md = conn.getMetaData(); return md.getDatabaseProductName() + ", " + md.getDatabaseProductVersion() + ", " + md.getDriverName() + " " + md.getDriverVersion() + ", JDBC version " + md.getJDBCMajorVersion() + "." + md.getJDBCMinorVersion(); } }
public void invoke(Connection conn) throws Exception { try { DatabaseMetaData dmd = conn.getMetaData(); meta.setProductName(dmd.getDatabaseProductName()); meta.setVersion(dmd.getDatabaseProductVersion()); log.debug("JDBC Driver --> " + dmd.getDriverVersion()); log.debug("JDBC Name --> " + dmd.getDriverName()); if (!Strings.isBlank(dmd.getURL())) log.debug("JDBC URL --> " + dmd.getURL()); if (dmd.getDriverName().contains("mariadb") || dmd.getDriverName().contains("sqlite")) { log.warn("Auto-select fetch size to Integer.MIN_VALUE, enable for ResultSet Streaming"); SqlContext.DEFAULT_FETCH_SIZE = Integer.MIN_VALUE; } String tmp = dmd.getSQLKeywords(); if (tmp != null) { for (String keyword : tmp.split(",")) { keywords.add(keyword.toUpperCase()); } } expert.checkDataSource(conn); } catch (Exception e) { log.info("something wrong when checking DataSource", e); } } });
private Object loadAdapter(FactoryFinder finder, String kind) throws IOException { Object adapter = null; TransactionContext c = getTransactionContext(); try { try { // Make the filename file system safe. String dirverName = c.getConnection().getMetaData().getDriverName(); dirverName = dirverName.replaceAll("[^a-zA-Z0-9\\-]", "_").toLowerCase(Locale.ENGLISH); try { adapter = finder.newInstance(dirverName); LOG.info("Database " + kind + " driver override recognized for : [" + dirverName + "] - adapter: " + adapter.getClass()); } catch (Throwable e) { LOG.info("Database " + kind + " driver override not found for : [" + dirverName + "]. Will use default implementation."); } } catch (SQLException e) { LOG.warn("JDBC error occurred while trying to detect database type for overrides. Will use default implementations: " + e.getMessage()); JDBCPersistenceAdapter.log("Failure Details: ", e); } } finally { c.close(); } return adapter; }
/** * 识别JDBC驱动名 * * @param conn 数据库连接对象 * @return 驱动 * @throws DbRuntimeException SQL异常包装,获取元数据信息失败 */ public static String identifyDriver(Connection conn) throws DbRuntimeException { String driver = null; DatabaseMetaData meta; try { meta = conn.getMetaData(); driver = identifyDriver(meta.getDatabaseProductName()); if (StrUtil.isBlank(driver)) { driver = identifyDriver(meta.getDriverName()); } } catch (SQLException e) { throw new DbRuntimeException("Identify driver error!", e); } return driver; } }
/** * 识别JDBC驱动名 * * @param conn 数据库连接对象 * @return 驱动 * @throws DbRuntimeException SQL异常包装,获取元数据信息失败 */ public static String identifyDriver(Connection conn) throws DbRuntimeException { String driver = null; DatabaseMetaData meta; try { meta = conn.getMetaData(); driver = identifyDriver(meta.getDatabaseProductName()); if (StrUtil.isBlank(driver)) { driver = identifyDriver(meta.getDriverName()); } } catch (SQLException e) { throw new DbRuntimeException("Identify driver error!", e); } return driver; } }
@Test public void tableExists_is_using_getSchema_when_not_using_h2() throws Exception { try (Connection connection = spy(dbTester.openConnection())) { // DatabaseMetaData mock DatabaseMetaData metaData = mock(DatabaseMetaData.class); doReturn("xxx").when(metaData).getDriverName(); // ResultSet mock ResultSet resultSet = mock(ResultSet.class); doReturn(true, false).when(resultSet).next(); doReturn("SCHEMA_MIGRATIONS").when(resultSet).getString(eq("TABLE_NAME")); doReturn(resultSet).when(metaData).getTables(any(), eq("yyyy"), any(), any()); // Connection mock doReturn("yyyy").when(connection).getSchema(); doReturn(metaData).when(connection).getMetaData(); assertThat(DatabaseUtils.tableExists("SCHEMA_MIGRATIONS", connection)).isTrue(); } }
DatabaseMetaData metaData = con.getMetaData(); String driverName = metaData.getDriverName().toLowerCase();
@Test public void testGetDriverVersion() throws Exception { Driver driver = DriverManager.getDriver("jdbc:presto:"); assertEquals(driver.getMajorVersion(), 0); assertEquals(driver.getMajorVersion(), 0); try (Connection connection = createConnection()) { DatabaseMetaData metaData = connection.getMetaData(); assertEquals(metaData.getDriverName(), PrestoDriver.DRIVER_NAME); assertEquals(metaData.getDriverVersion(), "unknown"); assertEquals(metaData.getDriverMajorVersion(), 0); assertEquals(metaData.getDriverMinorVersion(), 0); } }
@Override public Section toProtobuf() { Section.Builder protobuf = Section.newBuilder(); protobuf.setName("Database"); try (DbSession dbSession = dbClient.openSession(false)) { DatabaseMetaData metadata = dbSession.getConnection().getMetaData(); setAttribute(protobuf, "Database", metadata.getDatabaseProductName()); setAttribute(protobuf, "Database Version", metadata.getDatabaseProductVersion()); setAttribute(protobuf, "Username", metadata.getUserName()); setAttribute(protobuf, "URL", metadata.getURL()); setAttribute(protobuf, "Driver", metadata.getDriverName()); setAttribute(protobuf, "Driver Version", metadata.getDriverVersion()); } catch (SQLException e) { throw new IllegalStateException("Fail to get DB metadata", e); } return protobuf.build(); } }
@Test public void testSetParameterValueWithNullAndUnknownTypeOnDerbyEmbedded() throws SQLException { StatementCreatorUtils.shouldIgnoreGetParameterType = true; Connection con = mock(Connection.class); DatabaseMetaData dbmd = mock(DatabaseMetaData.class); given(preparedStatement.getConnection()).willReturn(con); given(con.getMetaData()).willReturn(dbmd); given(dbmd.getDatabaseProductName()).willReturn("Apache Derby"); given(dbmd.getDriverName()).willReturn("Apache Derby Embedded Driver"); StatementCreatorUtils.setParameterValue(preparedStatement, 1, SqlTypeValue.TYPE_UNKNOWN, null, null); verify(dbmd).getDatabaseProductName(); verify(dbmd).getDriverName(); verify(preparedStatement).setNull(1, Types.VARCHAR); StatementCreatorUtils.shouldIgnoreGetParameterType = false; }
@Test public void testSetParameterValueWithNullAndUnknownTypeOnInformix() throws SQLException { StatementCreatorUtils.shouldIgnoreGetParameterType = true; Connection con = mock(Connection.class); DatabaseMetaData dbmd = mock(DatabaseMetaData.class); given(preparedStatement.getConnection()).willReturn(con); given(con.getMetaData()).willReturn(dbmd); given(dbmd.getDatabaseProductName()).willReturn("Informix Dynamic Server"); given(dbmd.getDriverName()).willReturn("Informix Driver"); StatementCreatorUtils.setParameterValue(preparedStatement, 1, SqlTypeValue.TYPE_UNKNOWN, null, null); verify(dbmd).getDatabaseProductName(); verify(dbmd).getDriverName(); verify(preparedStatement).setObject(1, null); StatementCreatorUtils.shouldIgnoreGetParameterType = false; }
DatabaseMetaData metaData = connection.getMetaData(); String dbProduct = metaData.getDatabaseProductName(); database = identifyDialect(dbProduct); database = identifyDialect(metaData.getDriverName());
@Test public void testDatabaseVersion() throws Exception { final URLClassLoader loader = URLClassLoader.newInstance(new URL[] {getJdbcUrl()}); Class<?> clazz = loader.loadClass("org.apache.drill.jdbc.Driver"); try { Driver driver = (Driver) clazz.newInstance(); try (Connection c = driver.connect("jdbc:drill:drillbit=localhost:" + userPort, null)) { DatabaseMetaData metadata = c.getMetaData(); assertEquals("Apache Drill JDBC Driver", metadata.getDriverName()); assertEquals("Apache Drill Server", metadata.getDatabaseProductName()); } } catch (Exception ex) { throw ex; } }
@Test public void testSetParameterValueWithNullAndUnknownType() throws SQLException { StatementCreatorUtils.shouldIgnoreGetParameterType = true; Connection con = mock(Connection.class); DatabaseMetaData dbmd = mock(DatabaseMetaData.class); given(preparedStatement.getConnection()).willReturn(con); given(dbmd.getDatabaseProductName()).willReturn("Oracle"); given(dbmd.getDriverName()).willReturn("Oracle Driver"); given(con.getMetaData()).willReturn(dbmd); StatementCreatorUtils.setParameterValue(preparedStatement, 1, SqlTypeValue.TYPE_UNKNOWN, null, null); verify(preparedStatement).setNull(1, Types.NULL); StatementCreatorUtils.shouldIgnoreGetParameterType = false; }
@Test // SPR-8571 public void testSetParameterValueWithNullAndVendorSpecificType() throws SQLException { StatementCreatorUtils.shouldIgnoreGetParameterType = true; Connection con = mock(Connection.class); DatabaseMetaData dbmd = mock(DatabaseMetaData.class); given(preparedStatement.getConnection()).willReturn(con); given(dbmd.getDatabaseProductName()).willReturn("Oracle"); given(dbmd.getDriverName()).willReturn("Oracle Driver"); given(con.getMetaData()).willReturn(dbmd); StatementCreatorUtils.setParameterValue(preparedStatement, 1, Types.OTHER, null, null); verify(preparedStatement).setNull(1, Types.NULL); StatementCreatorUtils.shouldIgnoreGetParameterType = false; }
setConnection(getConnectionFromLocalDriver(getUrl(), info)); setDatabaseMetaData(getConnection().getMetaData()); getDatabaseMetaData().getDriverName(), getDatabaseMetaData().getDriverVersion()})); } catch (Exception e) {