我想通过一个java代码在单个SQL服务器线程中运行多个SQL查询。我尝试使用批处理运行我的查询,但看到日志,我的查询运行在不同的线程。在单个线程中运行多个sql查询?
有没有办法在单个线程下运行我所有的查询?
我已为我的查询启用并发标志,以便读/写操作不冲突并导致异常。
我想通过一个java代码在单个SQL服务器线程中运行多个SQL查询。我尝试使用批处理运行我的查询,但看到日志,我的查询运行在不同的线程。在单个线程中运行多个sql查询?
有没有办法在单个线程下运行我所有的查询?
我已为我的查询启用并发标志,以便读/写操作不冲突并导致异常。
你必须通过关闭auto commit
手动处理事务,并作出commit
您运行报表后:
connection.setAutoCommit(false);
statement.executeUpdate();
connection.commit();
这将保证我有一个用于查询执行的单个线程吗? –
您的查询将在一个事务中运行,以避免并发修改。请参阅[使用事务](http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html)以供参考。 – Kai
但重点是,我没有使用我的查询进行交易相关的目的。我只是创建了一组select语句以在一定的限制之后执行,以便将sql开销保持在最小。 –
您可以创建pl/sql函数并将所有查询放入该函数中。
或者执行多条语句,单连接白名单关闭它。
“你”,而不是“U”:P –
@AlexLockwood - 好吧,就像你说的...哦对不起! **你**说... :) –
@乔伊我认为当批量执行时,有一个单一的MySQL服务器连接,我希望这个查询可以在一个mysql线程下运行。但是这没有发生。我想知道是否有人会有这方面的线索。 –
你的意思是“一个交易”?你在日志中看到什么? “_I启用了并发标志_”是什么意思? – Kai
如果你想在一个线程中运行它们,我怀疑会有任何并发问题,但是user714965是没有足够的信息来正确理解问题的。顺便说一句user714965改变你的名字会让你很奇怪,看到你的分数在某人的默认用户标签! – Thihara