基本上,我想避免存储过程,但同时我不希望多次往返数据库执行顺序语句。
显然this blog说Facebook使用mysql的multiple-statement-queries。不幸的是,它的一个C API,是否有Java等价物?
简而言之,问题“是在java + mysql中,第二个jdbc语句如何使用第一个语句的输出作为输入来执行,而不是往返数据库而没有存储过程”?
如果不是其他人如何解决这个问题?
答案 0 :(得分:1)
是的,MySQL的JDBC驱动程序支持多语句查询。但是出于安全原因,默认情况下禁用它,因为多语句查询会显着增加与最终SQL注入相关的风险。
要启用多语句查询支持,只需将allowMultiQueries=true
选项添加到连接字符串(或以地图格式传递等效选项)。您可以在此处获取有关该选项的更多信息: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
确定是否确实有更多{{1}}可用。
答案 1 :(得分:0)
听起来你想做批量处理。 这是一个重复的问题,答案很好: How to execute multiple SQL statements from java