2012-05-04 50 views
2

我想通过一个java代码在单个SQL服务器线程中运行多个SQL查询。我尝试使用批处理运行我的查询,但看到日志,我的查询运行在不同的线程。在单个线程中运行多个sql查询?

有没有办法在单个线程下运行我所有的查询?

我已为我的查询启用并发标志,以便读/写操作不冲突并导致异常。

+0

你的意思是“一个交易”?你在日志中看到什么? “_I启用了并发标志_”是什么意思? – Kai

+0

如果你想在一个线程中运行它们,我怀疑会有任何并发​​问题,但是user714965是没有足够的信息来正确理解问题的。顺便说一句user714965改变你的名字会让你很奇怪,看到你的分数在某人的默认用户标签! – Thihara

回答

2

你必须通过关闭auto commit手动处理事务,并作出commit您运行报表后:

connection.setAutoCommit(false); 
statement.executeUpdate(); 
connection.commit(); 
+0

这将保证我有一个用于查询执行的单个线程吗? –

+0

您的查询将在一个事务中运行,以避免并发修改。请参阅[使用事务](http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html)以供参考。 – Kai

+0

但重点是,我没有使用我的查询进行交易相关的目的。我只是创建了一组select语句以在一定的限制之后执行,以便将sql开销保持在最小。 –

0

我不确定,但您可以为多个SQL查询创建过程,然后从您的Java代码调用它。 Thisthis可能会导致这种情况。

1

您可以创建pl/sql函数并将所有查询放入该函数中。

或者执行多条语句,单连接白名单关闭它。

+0

“你”,而不是“U”:P –

+1

@AlexLockwood - 好吧,就像你说的...哦对不起! **你**说... :) –

+0

@乔伊我认为当批量执行时,有一个单一的MySQL服务器连接,我希望这个查询可以在一个mysql线程下运行。但是这没有发生。我想知道是否有人会有这方面的线索。 –