2012-05-04 55 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線程下運行。但是這沒有發生。我想知道是否有人會有這方面的線索。 –