java - java中是否有相当于Mysql的 "multiple-statement-queries"

标签 java mysql

所以基本上,我想避免存储过程,但同时我不希望多次往返数据库来执行顺序语句。

显然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/

相关文章:

java - 如何确定泛型类型的类?

mysql - 如果Mysql复制时Master和Slave有不同的数据库,如何重新同步Mysql DB?

java - 使用 Jackson JSR310 模块反序列化 LocalDateTime

Java 随机访问文件

MySQL - 如果不存在则返回 0

python - 出现此错误 "1064 (42000): You have an error in your SQL syntax"

mysql - mysql 的 AUTO_INCREMENT 问题

MySQL - 合并两个表 - 有条件

java - 比较方法违反了它的一般契约! Java7比较器

java - 将字符映射到国际键集的键码