所以基本上,我想避免存储过程,但同时我不希望多次往返数据库来执行顺序语句。
显然this blog说 Facebook 使用 mysql 的 multiple-statement-queries 。不幸的是,它是一个 C API,有与它等效的 java 吗?
简而言之,问题是“在 java+mysql 中,第二个 jdbc 语句如何使用第一个语句的输出作为输入来执行,而不需要往返数据库且没有存储过程”?
如果不是,其他人如何解决这个问题?
最佳答案
是的,MySQL 的 JDBC 驱动程序支持多语句查询。然而,出于安全原因,它默认被禁用,因为多语句查询会显着增加与最终 SQL 注入(inject)相关的风险。
要打开多语句查询支持,只需将 allowMultiQueries=true
选项添加到连接字符串(或以 map 格式传递等效选项)。您可以在此处获取有关该选项的更多信息:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html .
启用此选项后,您只需执行类似于以下内容的调用:statement.execute("select ... ; select ... ; select ...")
。返回的 ResultSet
可以从 Statement
对象进行迭代:每次调用 statement.getResultSet()
都会返回下一个。使用 statement.getMoreResults()
确定是否确实有更多 ResultSet
可用。
关于java - java中是否有相当于Mysql的 "multiple-statement-queries",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42370564/