我們正在嘗試使用PreparedStatement從Oracle數據庫提取數據。它在從PL/SQL開發者運行時一直運行並提取數據時保持獲取零記錄。從Oracle數據庫提取數據不起作用
我們在嘗試調試時發現了根本原因。在調試代碼時,正確地獲取了兩條記錄。
我們通過放置這段代碼做了一個臨時修復。
ResultSet rs = ps.executeQuery();
while(!rs.hasNext()){
ps.executeQuery();}
This Works。但這不是最好的解決方案,因爲它會導致不必要的數據庫命中。它顯然看起來像一個時間問題。我們還明確提交了早期的事務,因爲它們可能會影響此查詢的結果。
什麼可能導致這種情況。解決這個問題的最好方法是什麼?
的方法是相當大的:我就在這裏發表一些地方:
private static boolean loadCommission(Member member){
Connection conn = getConnection("schema1"); //obtained through connection pool
//insertion into table
conn.close();
Conn conn2 = getConnection("schema2"); //obtained through connection pool
PreparedStatement ps = conn2.prepareStatement(sql);
//this sql combines data from schema1
// and 2 with DB links
ResultSet rs = ps.executeQuery();
//business logic
conn2.close();
return true;
}
感謝
我們試圖昨天一些事情。我們用直接的jdbc連接代替了第二個連接代碼,例如
Connection conn = DriverManager.getConnection(URL, USER, PASS);
這也適用。現在我們不確定延遲是從池中獲取連接還是在完成之前的事務中,就像我們之前所想的那樣。
你能不能分享你的完整代碼而沒有臨時修復 – 2013-05-09 14:08:33