Spring JDBC和Oracle Db驱动程序连接

时间:2012-07-11 13:43:32

标签: java sql oracle spring

我是Spring框架的新手,并尽我所能去理解。 我正在使用Spring NamedParameterJDBC模板进行操作

我在DAO中有这个代码

SqlParameterSource paramSource = new BeanPropertySqlParameterSource(
            positionDO);
KeyHolder keyHolder = new GeneratedKeyHolder();
return this.jdbcTemplate.update(sql, paramSource, keyHolder);

问题是当我执行时,我收到此错误

 org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL 
[INSERT INTO POSITION_TABLE VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)]; SQL state [null]; 
error code [0]; 
java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection.prepareStatement(Ljava/lang/String;I)
Ljava/sql/PreparedStatement;

我用谷歌搜索,发现这是旧的Ojdbc驱动程序的问题,如ojdbc14,它不发送自动生成的密钥。 现在我无法找到如何通过Spring或任何其他方式加载最新的ojdbc驱动程序来执行相同的操作。

我假设spring-jdbc将具有默认的ojdbc驱动程序。我对么?因为我没有在我的项目中添加任何其他驱动程序。

- >没有自动生成密钥,整个过程运行正常。

1 个答案:

答案 0 :(得分:3)

可能您的Java和ojdbc版本不匹配。由于JDBC是JavaSE的一部分,因此您的JavaSE版本和ojdbc版本必须匹配。

ojdbc14→Java 1.4

ojdbc5→Java 1.5

ojdbc6→Java 1.6

如果您的ojdbc驱动程序比JavaSE版本更新,那么事情应该仍然有效。您可以从中获取Oracle JDBC驱动程序 Oracle Download page。不幸的是,你不会在Maven中心找到它们,所以你需要手动将它们部署到Maven资源库。

如果要搜索ojdbc驱动程序依赖项,请使用

mvn dependency:tree

如果它不在那里并且没有与您的工件(WAR或EAR)一起打包,则它可能来自您的应用程序服务器或类似工具。