代码之家  ›  专栏  ›  技术社区  ›  Rich

如何确定给定JDBC连接的数据库类型?

  •  29
  • Rich  · 技术社区  · 16 年前

    我需要处理返回三个数据库(Oracle、Sybase和MS Server)的存储过程/函数的结果集。过程/函数通常是相同的,但是在oracle中调用有点不同。

    statement.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
    ...
    statement.execute(); 
    ResultSet rs = (ResultSet)statement.getObject(1);
    

    JDBC不提供处理此问题的通用方法,因此我需要在代码中区分不同类型的数据库。我得到了连接,但不知道确定数据库是否是Oracle的最佳方法。我可以用司机的名字,但我宁愿找一个更干净的方法。

    2 回复  |  直到 8 年前
        1
  •  47
  •   Jerven    11 年前

    我想您应该想使用databasemetadata类。最可能 DatabaseMetaData.getDatabaseProductName 这就足够了,不过如果您的代码依赖于正在使用的特定数据库的特定版本,那么您可能也希望使用getdatabaseproductversion方法。

        2
  •  2
  •   Andrew Swan    8 年前

    您可以使用org.apache.ddlutils,类 Platformutils :

    databaseName = new PlatformUtils().determineDatabaseType(dataSource)