我在同一行中有多个调用的查询(请参见下面的代码)
Statement 对象由 JDBCTemplate 自动创建。
JDBCTemplate 被实例化为 new JDBCTemplate() 并且从 weblogic 服务器池中查找数据源。
A 类实现 org.springframework.jdbc.core.StatementCallback {
public Object doInStatement(Statement stmt) throws Exception {
String sql = "select * from a where pk = 'test';select * from b where pk = 'test';select * from c where pk = 'test'";
Statement stmt =
ResultSet rs = stmt.executeQuery(sql);
rs = stmt.getResultSet();
...
rs = stmt.getMoreResults();
...
rs = stmt.getMoreResults();
...
}
使用 IBM 的 Type 2 驱动程序,上述工作非常好。我们不得不将驱动程序更改为 Oracle 的 Type 4 JDBC 驱动程序,当我们这样做时,上面的内容就坏了。它不再起作用,我收到以下错误:
[DAO.exec] 错误:java.sql.SQLException:[OWLS][DB2 JDBC Driver][DB2]ILLEGAL SYMBOL select * from a where pk ;有效的符号是声明的开始
有谁知道为什么 Type 4 驱动程序不支持上述内容?我需要在语句中使用不同的分隔符,以不同的方式使其工作吗?
注意:这段代码在 IBM 2 型 JDBC 驱动程序上没有任何问题,当我们切换到 Oracle 的 4 型驱动程序时它失败了。
我们使用 weblogic 作为应用服务器和 DB2 数据库。