java - ejemplo - ¿Cómo determinar el tipo de base de datos para una conexión JDBC determinada?
jdbc java ejemplo (2)
Necesito manejar resultados que devuelven procedimientos / funciones almacenados para tres bases de datos (Oracle, sybase, MS-Server). Los procedimientos / funciones son generalmente los mismos, pero la llamada es un poco diferente en Oracle.
statement.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
...
statement.execute();
ResultSet rs = (ResultSet)statement.getObject(1);
JDBC no proporciona una forma genérica para manejar esto, así que tendré que distinguir los diferentes tipos de bases de datos en mi código. Me dieron la conexión pero no sé cuál es la mejor manera de determinar si el DB es Oracle. Puedo usar el nombre del controlador, pero preferiría encontrar una manera más limpia.
Puede usar org.apache.ddlutils, class Platformutils :
databaseName = new PlatformUtils().determineDatabaseType(dataSource)
Sospecho que querrías usar la clase DatabaseMetaData. Lo más probable es que DatabaseMetaData.getDatabaseProductName sea suficiente, aunque también puede utilizar el método getDatabaseProductVersion si tiene un código que depende de la versión particular de la base de datos particular con la que está trabajando.