diff --git a/src/main/java/org/utplsql/api/DBHelper.java b/src/main/java/org/utplsql/api/DBHelper.java index 412e970..3c386cb 100644 --- a/src/main/java/org/utplsql/api/DBHelper.java +++ b/src/main/java/org/utplsql/api/DBHelper.java @@ -20,15 +20,11 @@ private DBHelper() {} * @throws SQLException any database error */ public static String newSysGuid(Connection conn) throws SQLException { - CallableStatement callableStatement = null; - try { - callableStatement = conn.prepareCall("BEGIN ? := sys_guid(); END;"); + assert conn != null; + try (CallableStatement callableStatement = conn.prepareCall("BEGIN ? := sys_guid(); END;")) { callableStatement.registerOutParameter(1, OracleTypes.RAW); callableStatement.executeUpdate(); return callableStatement.getString(1); - } finally { - if (callableStatement != null) - callableStatement.close(); } } @@ -39,26 +35,22 @@ public static String newSysGuid(Connection conn) throws SQLException { * @throws SQLException any database error */ public static String getCurrentSchema(Connection conn) throws SQLException { - CallableStatement callableStatement = null; - try { - callableStatement = conn.prepareCall("BEGIN ? := sys_context('userenv', 'current_schema'); END;"); + assert conn != null; + try (CallableStatement callableStatement = conn.prepareCall("BEGIN ? := sys_context('userenv', 'current_schema'); END;")) { callableStatement.registerOutParameter(1, Types.VARCHAR); callableStatement.executeUpdate(); return callableStatement.getString(1); - } finally { - if (callableStatement != null) - callableStatement.close(); } } /** Returns the Frameworks version string of the given connection * * @param conn Active db connection - * @return - * @throws SQLException + * @return Version-string of the utPLSQL framework + * @throws SQLException any database error */ - public static Version getDatabaseFrameworkVersion( Connection conn ) - throws SQLException { + public static Version getDatabaseFrameworkVersion( Connection conn ) throws SQLException { + assert conn != null; Version result = new Version(""); try (PreparedStatement stmt = conn.prepareStatement("select ut_runner.version() from dual")) { @@ -78,11 +70,32 @@ public static Version getDatabaseFrameworkVersion( Connection conn ) return result; } + /** Returns the Oracle database Version from a given connection object + * + * @param conn Connection-Object + * @return Returns version-string of the Oracle Database product component + * @throws SQLException any database error + */ + public static String getOracleDatabaseVersion( Connection conn ) throws SQLException { + assert conn != null; + String result = null; + try (PreparedStatement stmt = conn.prepareStatement("select version from product_component_version where product like 'Oracle Database%'")) + { + ResultSet rs = stmt.executeQuery(); + + if ( rs.next() ) + result = rs.getString(1); + } + + return result; + } + /** * Enable the dbms_output buffer with unlimited size. * @param conn the connection */ public static void enableDBMSOutput(Connection conn) { + assert conn != null; try (CallableStatement call = conn.prepareCall("BEGIN dbms_output.enable(NULL); END;")) { call.execute(); } catch (SQLException e) { @@ -95,6 +108,7 @@ public static void enableDBMSOutput(Connection conn) { * @param conn the connection */ public static void disableDBMSOutput(Connection conn) { + assert conn != null; try (CallableStatement call = conn.prepareCall("BEGIN dbms_output.disable(); END;")) { call.execute(); } catch (SQLException e) { diff --git a/src/main/java/org/utplsql/api/JavaApiVersionInfo.java b/src/main/java/org/utplsql/api/JavaApiVersionInfo.java index 87d8ab9..f4727c5 100644 --- a/src/main/java/org/utplsql/api/JavaApiVersionInfo.java +++ b/src/main/java/org/utplsql/api/JavaApiVersionInfo.java @@ -14,5 +14,6 @@ public class JavaApiVersionInfo { public static String getVersion() { return MAVEN_PROJECT_VERSION + "." + BUILD_NO; } + public static String getInfo() { return MAVEN_PROJECT_NAME + " " + getVersion(); } } diff --git a/src/test/java/org/utplsql/api/DBHelperIT.java b/src/test/java/org/utplsql/api/DBHelperIT.java index b710051..4b84945 100644 --- a/src/test/java/org/utplsql/api/DBHelperIT.java +++ b/src/test/java/org/utplsql/api/DBHelperIT.java @@ -5,6 +5,7 @@ import java.sql.SQLException; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; public class DBHelperIT extends AbstractDatabaseTest { @@ -14,4 +15,10 @@ public void getFrameworkVersion() throws SQLException { assertEquals(true, v.isValid()); } + @Test + public void getOracleDatabaseVersion() throws SQLException { + String databaseVersion = DBHelper.getOracleDatabaseVersion(getConnection()); + assertNotNull(databaseVersion); + } + }