我们有一个在Java 1.6上运行的应用程序,并且能够通过自定义插件与RDBMS系统通信。我们不关心客户的数据库类型,但出于各种原因,我们确实决定要求使用Type 4驱动程序。
我想以编程方式决定驱动程序是否为Type 4,以便我可以立即拒绝它,而不是花时间调试问题,以便发现驱动程序不是Type 4.因为我不知道供应商是什么是的,我不能只看版本号。我看过Driver.jdbcCompliant(),但这不是驱动程序是Type 4的必要条件。我还看了创建一个Connection然后对它进行反射,看看它是否实现了某些方法,如isValid() ,但我再次意识到这并不一定能保证驱动程序是Type 4.有什么建议吗?
答案 0 :(得分:0)
编辑:似乎我正在谈论不同的事情!
通过DatabaseMetaData
获取Connection.getMetaData()
并检查getJDBCMajorVersion()> = 4.您可能希望在调用该方法时捕获NoSuchMethodException
,因为只有JDBC 3.0+司机会有它。
编辑:嗯,这似乎应该是正确的但是...... Oracle似乎没有正确实现它,因为我获得了11.2的JDBC版本。这与驱动程序版本相同。谢谢甲骨文!
如果您不能指望专门为此设计的方法,我认为您唯一的选择是在createClob()
上调用Connection
等方法并捕获NoSuchMethodException
。那或为特定供应商添加特殊处理。