使用 JDBC 在单个语句中执行多个查询
在 JDBC 中,可以在单个语句中执行多个查询,尽管有特定的要求.
选项 1:配置多个查询
要执行用分号分隔的多个查询,请将数据库连接属性allowMultiQueries设置为true。
String url = "jdbc:mysql:///test?allowMultiQueries=true";
boolean hasMoreResultSets = stmt.execute(multiQuerySqlString);
随后,使用以下方法迭代查询结果:
while ( hasMoreResultSets || stmt.getUpdateCount() != -1 ) { if ( hasMoreResultSets ) { ResultSet rs = stmt.getResultSet(); // handle resultSet } else { int queryResult = stmt.getUpdateCount(); // handle DML updates } hasMoreResultSets = stmt.getMoreResults(); }
选项 2:存储过程
创建一个组合 SELECT 和 INSERT 查询的存储过程。然后,使用 CallableStatement 执行它:
CallableStatement cstmt = con.prepareCall("call multi_query()"); boolean hasMoreResultSets = cstmt.execute();
像以前一样迭代返回的结果:
while (hasMoreResultSets) { ResultSet rs = stmt.getResultSet(); // handle resultSet }
需要注意的是,虽然此功能得到了广泛支持,但可能并未得到广泛支持。在所有 JDBC 驱动程序或数据库实现中可用。请务必查阅特定驱动程序文档以了解兼容性详细信息。
以上是如何在单个 JDBC 语句中执行多个 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!