2011-05-10 8 views
5

मेरे जावा एप्लिकेशन को कुछ समय के लिए कर्सर को ओरेकल डीबी पर रखने की आवश्यकता है। इसके दौरान अन्य डीबी बयान देना होगा। क्या इसके लिए अलग-अलग डीबी कनेक्शन या समान (कर्सर का एक) उपयोग किया जा सकता है?क्या ओरेकल डीबी प्रति कनेक्शन एकाधिक (समांतर) संचालन का समर्थन करता है?

धन्यवाद।

+0

क्या आपने कोशिश की? क्या परिणाम दिया? – Mat

+0

नहीं, मैंने नहीं किया है। अभी तक – Ralkie

+0

आप किस प्रकार के जावा एप्लिकेशन के बारे में बात कर रहे हैं? ओरेकल समर्पित सत्रों के साथ पूरी तरह से ठीक है जो बयानों की श्रृंखला को संभालता है। हालांकि, अधिकांश जावा एप्लिकेशन वेब ऐप्स होते हैं, और वेब ऐप्स आमतौर पर * स्टेटलेस * प्रोटोकॉल और कनेक्शन पूलिंग का उपयोग करते हैं; इसका मतलब यह है कि किसी विशिष्ट उपयोगकर्ता के लिए समय-समय पर आदेश जारी करने के लिए एक डेटाबेस सत्र आरक्षित करना मुश्किल होता है। तो, अधिक जानकारी कृपया। क्या आपका मतलब * समानांतर "* था या क्या यह" अनुक्रमिक "होना चाहिए? ओरेकल समांतर क्वेरी/डीएमएल का समर्थन करता है लेकिन यह एक अलग सवाल है। – APC

उत्तर

5

एकमात्र प्रतिबंध यह है कि एक ही कथन में किसी दिए गए समय पर केवल एक ही परिणाम हो सकता है। ध्यान दें कि एक बयान कई resultsets उत्पादन कर सकते हैं लेकिन आप उन्हें क्रमिक रूप से उपयोग करने के लिए (getNextResult() का प्रयोग करके)

कई खुला resultsets/कर्सर आप एक से अधिक java.sql.Statement वस्तुओं की जरूरत है करने के लिए सक्षम होने के लिए है।

एक कनेक्शन में केवल एक सक्रिय (यानी चल रहा है) कथन हो सकता है। इसलिए यदि आपको कई खुले कर्सर (परिणामसेट्स) की आवश्यकता है तो आपको उन्हें क्रमशः चलाने के लिए (एक के बाद एक) प्रत्येक को अपने Statement ऑब्जेक्ट के साथ चलाने की आवश्यकता है।

3

ओरेकल को एमएसएसएलएल लोगों को मारस (एकाधिक सक्रिय परिणाम सेट) के साथ कोई समस्या नहीं है।

आप PL/SQL कोड का एक बहुत में बात इस तरह की देख सकते हैं, और उस बात के लिए PL/SQL "बस" एक एसक्यूएल इंजन के लिए ग्राहक है के रूप में अपने जावा कोड है:

for a in (select field1, field2 from table1) loop 
    for b in (select * from table2 where SomeField = a.Field1) loop 
    ... 
    end loop; 
end loop; 

हालांकि, इसके लिए मेरा शब्द मत लो। आप जावा में अपने जैसे नेस्टेड लूप बना सकते हैं।

0

आप डेटाबेस पूलिंग की अवधारणा का उपयोग कर सकते हैं।

Click Here

यह डेटाबेस कनेक्शन का एक पूल प्रदान करता है ताकि जब भी आवश्यकता पड़ने पर आप पूल से एक डेटाबेस कनेक्शन प्राप्त कर सकते हैं।

डेटाबेस कनेक्शन और बंद होने के कारण यह स्मृति को भी अनुकूलित किया गया है।

+0

प्रश्न का पूरा बिंदु यह था कि ओपी कई कनेक्शन नहीं चाहता है, लेकिन, यह जानना चाहता है कि क्या वह एक ही समय में अन्य एसक्यूएल निष्पादित कर सकता है जैसे कर्सर खोलना - जो वह कर सकता है! –

+0

हां, मैं पूलिंग का उपयोग कर सकता हूं (और शायद होगा), लेकिन जैसा कि जेम्स ने बताया, सवाल उसी कनेक्शन का उपयोग करने के बारे में था। – Ralkie

1

बेशक आप एकाधिक खुले कर्सर रख सकते हैं जबकि आप एक ही कनेक्शन पर अन्य प्रश्न जारी कर रहे हैं। हालांकि, पहले कर्सर खोले जाने के दौरान अन्य प्रश्न या बयान जारी करना संभव नहीं है। ऐसा इसलिए है क्योंकि किसी भी समय ओरेकल सत्र में केवल एक ही अनुरोध सक्रिय हो सकता है (यानी निष्पादित मधुमक्खी)।

संबंधित मुद्दे