This帖子显示在单个 JDBC 调用(针对 SQL Server 数据库)中执行多个查询,方法是用分号分隔它们。当我尝试对 Oracle 10G 执行相同操作时,出现错误“无效字符”:
class db
{
public static void main(String aa[])throws Exception
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//192.168.10.29:1521/ttt","username","password");
PreparedStatement stat = conn.prepareStatement("select voila from app where rownum<4; select code from process where rownum<4");
stat.execute();
while (stat.getMoreResults()){
ResultSet rs = stat.getResultSet();
while (rs.next()){
System.out.println(rs.getString(1));
}
}
conn.close();
}
}
我做错了什么?
最佳答案
你没有做错任何事情(除了假设所有的 DBMS 工作相同)
Oracle(及其 JDBC 驱动程序)根本不支持这一点。
您需要单独运行每个 SELECT。
顺便说一句:这是某些 SQL 注入(inject)攻击不适用于 Orace 的原因之一 - 特别是著名的“little bobby tables”卡通片。
关于java - JDBC : returning multiple result sets via a single database invocation - not working for Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8504019/