Java Database Connectivity
जावा डेटाबेस कनेक्टिविटी (जे. डी. बी. सी.) जावा प्रोग्रामिंग भाषा के लिए एक अनुप्रयोग प्रोग्रामिंग इंटरफेस (ए. पी. आई.) है जो परिभाषित करता है कि एक ग्राहक डेटाबेस तक कैसे पहुँच सकता है। यह एक जावा-आधारित डेटा एक्सेस तकनीक है जिसका उपयोग जावा डेटाबेस कनेक्टिविटी के लिए किया जाता है। यह ओरेकल कॉर्पोरेशन के जावा मानक संस्करण प्लेटफॉर्म का हिस्सा है। यह एक डेटाबेस में डेटा को पूछताछ और अद्यतन करने के तरीके प्रदान करता है, और संबंधपरक डेटाबेस की ओर उन्मुख है। एक जे. डी. बी. सी.-से-ओ. डी. बी. सी. पुल जावा आभासी मशीन (जे. वी. एम.) मेजबान वातावरण में किसी भी ओ. डी. बी. सी.-सुलभ डेटा स्रोत से कनेक्शन को सक्षम बनाता है। इतिहास और कार्यान्वयन सन माइक्रोसिस्टम्स ने 19 फरवरी, 1997 को जावा डेवलपमेंट किट (जे. डी. के.) 1.1 के हिस्से के रूप में जे. डी. बी. सी. जारी किया। तब से यह जावा प्लेटफॉर्म, मानक संस्करण (जावा एसई) का हिस्सा रहा है। जे. डी. बी. सी. वर्ग जावा पैकेज और में निहित हैं। संस्करण 3.1 से शुरू करते हुए, जे. डी. बी. सी. को जावा सामुदायिक प्रक्रिया के तहत विकसित किया गया है। जे. एस. आर. 54 जे. डी. बी. सी. 3 (जे2एसई 1.4 में शामिल) को निर्दिष्ट करता है, जे. एस. आर. 114 जे. डी. बी. सी. रोसेट परिवर्धन को निर्दिष्ट करता है, और जे. एस. आर. 221 जे. डी. बी. सी. 4 (जावा एस. ई. 6 में शामिल) का विनिर्देश है। जे. डी. बी. सी. 4.1, जे. एस. आर. 221 के रखरखाव रिलीज 1 द्वारा निर्दिष्ट किया गया है और जावा एस. ई. 7 में शामिल है। जे. डी. बी. सी. 4.2, जे. एस. आर. 221 के रखरखाव रिलीज 2 द्वारा निर्दिष्ट किया गया है और जावा एस. ई. 8 में शामिल है। नवीनतम संस्करण, जे. डी. बी. सी. 4.3, जे. एस. आर. 221 के रखरखाव रिलीज 3 द्वारा निर्दिष्ट किया गया है और जावा एस. ई. 9 में शामिल है। कार्यात्मकता चूंकि जे. डी. बी. सी. ('जावा डेटाबेस कनेक्टिविटी') ज्यादातर इंटरफेस परिभाषाओं और विनिर्देशों का एक संग्रह है, इसलिए यह इन इंटरफेस के कई कार्यान्वयनों को मौजूद रखने और रनटाइम पर एक ही एप्लिकेशन द्वारा उपयोग करने की अनुमति देता है। एपीआई सही जावा पैकेजों को गतिशील रूप से लोड करने और उन्हें जे. डी. बी. सी. चालक प्रबंधक () के साथ पंजीकृत करने के लिए एक तंत्र प्रदान करता है। इसका उपयोग जे. डी. बी. सी. कनेक्शन बनाने के लिए एक कारखाने के रूप में किया जाता है। जे. डी. बी. सी. कनेक्शन कथन बनाने और निष्पादित करने में सहायता करते हैं। जे. डी. बी. सी. कनेक्शन एस. क्यू. एल. के सी. आर. ई. टी., आई. एन. एस. ई. आर. टी., यू. पी. डी. ए. टी. ई. और डी. ई. एल. ई. टी. ई. जैसे अद्यतन कथनों या चयन जैसे प्रश्न कथनों का समर्थन करते हैं। इसके अतिरिक्त, संग्रहीत प्रक्रियाओं को जे. डी. बी. सी. कनेक्शन के माध्यम से लागू किया जा सकता है। जे. डी. बी. सी. निम्नलिखित वर्गों में से एक का उपयोग करके बयानों का प्रतिनिधित्व करता हैः-यह हर बार डेटाबेस सर्वर को भेजा जाता है। दूसरे शब्दों में, डेटा युक्त वस्तु प्राप्त करने के लिए एस. क्यू. एल. कथनों का उपयोग करके विधियों को निष्पादित किया जाता है। - इंटरफेस का एक उप-इंटरफेस है। कथन को कैश किया जाता है और फिर निष्पादन पथ को डेटाबेस सर्वर पर पूर्व निर्धारित किया जाता है, जिससे इसे कुशल तरीके से कई बार निष्पादित किया जा सकता है। इसका उपयोग पूर्व-संकलित एस. क्यू. एल. कथनों को निष्पादित करने के लिए किया जाता है। पूर्व-संकलित कथन चलाने से कथन निष्पादन दक्षता और प्रदर्शन में वृद्धि होती है। इसका उपयोग अक्सर गतिशील कथन के लिए किया जाता है जहां कुछ इनपुट मापदंडों को लक्ष्य डेटाबेस में पारित किया जाना चाहिए। यह क्वैरी पैरामीटर के आधार पर गतिशील क्वैरी को बदलने की अनुमति देता है। - इंटरफेस का एक उप-इंटरफेस है। इसका उपयोग डेटाबेस पर संग्रहीत प्रक्रियाओं को निष्पादित करने के लिए किया जाता है। संग्रहित प्रक्रियाओं के लिए इनपुट और आउटपुट दोनों मापदंडों को डेटाबेस में पारित किया जाना चाहिए। आई. एन. एस. ई. आर. टी., यू. पी. डी. ए. टी. ई. और डी. ई. एल. ई. टी. ई. जैसे अद्यतन कथन एक अद्यतन गणना देते हैं जो एक पूर्णांक के रूप में डेटाबेस में प्रभावित पंक्तियों की संख्या को दर्शाता है। ये कथन किसी अन्य जानकारी का जवाब नहीं देते हैं। प्रश्न कथन एक जे. डी. बी. सी. पंक्ति परिणाम सेट लौटाते हैं। पंक्ति परिणाम सेट का उपयोग परिणाम सेट के ऊपर चलने के लिए किया जाता है। एक पंक्ति में अलग-अलग स्तंभों को या तो नाम से या स्तंभ संख्या द्वारा पुनर्प्राप्त किया जाता है। परिणाम सेट में कितनी भी पंक्तियाँ हो सकती हैं। पंक्ति परिणाम सेट में मेटाडेटा होता है जो स्तंभों के नाम और उनके प्रकार का वर्णन करता है। मूल जे. डी. बी. सी. ए. पी. आई. में एक विस्तार है। जे. डी. बी. सी. कनेक्शनों को अक्सर ड्राइवर से सीधे प्राप्त करने के बजाय एक कनेक्शन पूल के माध्यम से प्रबंधित किया जाता है। उदाहरण-जब किसी जावा अनुप्रयोग को डेटाबेस कनेक्शन की आवश्यकता होती है, तो जे. डी. बी. सी. बनाने के लिए DriverManager.getConnection () विधियों में से एक का उपयोग किया जाता है। उपयोग किया गया यू. आर. एल. विशेष डेटाबेस और जे. डी. बी. सी. ड्राइवर पर निर्भर करता है। यह हमेशा "जे. डी. बी. सी.:" प्रोटोकॉल के साथ शुरू होगा, लेकिन बाकी विशेष विक्रेता पर निर्भर करता है। कनेक्शन कॉन = DriverManager.getConnection ("जे. डी. बी. सी.: कुछजे. डी. बी. सी. वेंडरः कुछ जे. डी. बी. सी. विक्रेता द्वारा आवश्यक अन्य डेटा", "मायलॉगिन", "मायपासवर्ड"); कोशिश करें {/* आप यहाँ कनेक्शन का उपयोग करते हैं अंत में {// कनेक्शन को बंद करना महत्वपूर्ण है जब आप इसे पूरा कर लेते हैं तो कोशिश करें {conn.close ();} कैच (थ्रोएबल ई) {/* इसके बजाय मूल अपवाद का प्रचार करें कि आप अभी लॉग करना चाहते हैं */logger.warn ("जे. डी. बी. सी. कनेक्शन को बंद नहीं कर सके", ई);} जावा एस. ई. 7 से आप जावा के ट्राई-विद-रिसोर्सेज स्टेटमेंट का उपयोग कर सकते हैं। कोशिश करें (स्टेटमेंट एसटीएमटी = conn.createStatement ()) {stmt.executeUpdate ("आईएनएसईआरटी आईएनटीओ माईटेबल (नाम) वैल्यूज ('मेरा नाम')");} ध्यान दें कि एस, एस और एस अक्सर ऑपरेटिंग सिस्टम संसाधनों जैसे कि साकेट या फाइल डिस्क्रिप्टर को जोड़ते हैं। दूरस्थ डेटाबेस सर्वरों के मामले में, आगे के संसाधन सर्वर पर बंधे होते हैं, उदाहरण के लिए। वर्तमान में खुले एस के लिए कर्सर। किसी भी जे. डी. बी. सी. ऑब्जेक्ट को अपनी भूमिका निभाते ही बंद करना महत्वपूर्ण है; कचरा संग्रह पर भरोसा नहीं किया जाना चाहिए। उपरोक्त ट्राई-विद-रिसोर्सेज का निर्माण एक कोड पैटर्न है जो इसे दूर करता है। डेटाबेस क्वेरी तंत्र का उपयोग करके डेटाबेस से डेटा पुनर्प्राप्त किया जाता है। नीचे दिया गया उदाहरण एक कथन बनाने और एक प्रश्न को निष्पादित करने को दर्शाता है। (स्टेटमेंट स्टेम्ट = conn.createStatement (); रिजल्टसेट आरएस = stmt.executeQuery ("सेलेक्ट * फ्रॉम मायटेबल")) {जबकि (rs.next ()) {इंट न्यूम कॉलम = rs.getMetaData (). गेट कॉलमकाउंट (); के लिए (इंट आई = 1; आई <= न्यूम कॉलम; आई + +) {// कॉलम नंबर 1 से शुरू होते हैं। //इसके अलावा, एक विशेष प्रकार के रूप में कॉलम को वापस करने के लिए निर्धारित परिणाम पर कई तरीके हैं। वैध धर्मांतरणों की सूची के लिए सूर्य प्रलेखन// देखें। System.out.println ("COLUMN" + i + "=" + rs.getObject (i));}} निम्नलिखित कोड एक तैयार स्टेटमेंट क्वेरी का एक उदाहरण है जो पहले उदाहरण से कॉन और क्लास का उपयोग करता हैः प्रयास करें (तैयार स्टेटमेंट ps = conn.prepareStatement ("SELECT i")। *, जे। * Omega i से, Zuppa j कहाँ i.name =? और j.num =? ") ) {// तैयार किए जा रहे एस. क्यू. एल. विवरण में, प्रत्येक प्रश्न चिह्न एक प्लेसहोल्डर// है जिसे "सेट" विधि आह्वान के माध्यम से आपके द्वारा प्रदान किए गए मूल्य से प्रतिस्थापित किया जाना चाहिए। //निम्नलिखित दो विधि कॉल दो प्लेसहोल्डरों को प्रतिस्थापित करते हैं; पहला एक स्ट्रिंग मूल्य द्वारा प्रतिस्थापित किया जाता है, और दूसरा एक पूर्णांक मूल्य द्वारा। ps.setString (1, "पुअर योरिक"); ps.setInt (2,8008);// परिणाम सेट, rs, SQL कथन को निष्पादित करने का परिणाम बताता है। //हर बार जब आप rs.next () पर कॉल करते हैं, तो एक आंतरिक पंक्ति सूचक, या कर्सर,// परिणाम की अगली पंक्ति के लिए उन्नत होता है। कर्सर शुरू में पहली पंक्ति से पहले स्थित होता है। कोशिश करें (ResultSet rs = ps.executeQuery ()) {जबकि (rs.next ()) {int numColumns = rs.getMetaData (). GetColumnCꯥꯎꯟꯠ (); के लिए (int i = 1; i <= numColumns; i + +) {// कॉलम संख्याएँ 1 से शुरू होती हैं। //इसके अलावा, एक विशेष प्रकार के रूप में कॉलम को वापस करने के लिए निर्धारित परिणाम पर कई तरीके हैं। वैध धर्मांतरणों की सूची के लिए सूर्य प्रलेखन// देखें। System.out.println ("COLUMN" + i + "=" + rs.getObject (i));}// के लिए}// जबकि}// ट्राई करें// अगर कोई डेटाबेस ऑपरेशन विफल हो जाता है, तो जे. डी. बी. सी. एक उठाता है। इस तरह की त्रुटि से उबरने के लिए आम तौर पर बहुत कम किया जा सकता है, इसके अलावा इसे यथासंभव विस्तार से लॉग इन करें। यह अनुशंसा की जाती है कि इसे एक एप्लिकेशन डोमेन अपवाद (एक अनियंत्रित) में अनुवादित किया जाए जिसके परिणामस्वरूप अंततः लेनदेन वापस हो जाता है और उपयोगकर्ता को एक सूचना दी जाती है। निम्नलिखित कोड एक डेटाबेस लेन-देन का एक उदाहरण हैः बूलियन ऑटो-कमिट-डिफॉल्ट = conn.getAutoCommit (); कोशिश करें {conn.setAutoCommit (गलत);/* आप यहाँ लेन-देन के लिए कोन के खिलाफ बयान निष्पादित करते हैं */conn.commit ();} कैच (फेंकने योग्य ई) {कोशिश करें {conn.rollback;} कैच (फेंकने योग्य ई) {logger.warn ("लेन-देन वापस नहीं कर सका", ई);} थ्रो ई;} अंत में {कोशिश करें {conn.setAutoCommit (ऑटो-कमिट-डिफॉल्ट);} कैच (फेंकने योग्य ई) {logger.warn ("ऑटो-कमिट सेटिंग को पुनर्स्थापित नहीं कर सका", ई);} कॉल के एक उदाहरण के लिए इम्पोर्ट java.sql.Connection; इम्पोर्ट java.sql.DriverManager; इम्पोर्ट java.sql.Statement; पब्लिक क्लास Mydb1 {स्टेटिक स्ट्रिंग यूआरएल = "जेडीबीसीः मायएसक्यूएलः// लोकलहोस्ट/मायडीबी"; पब्लिक स्टेटिक वॉइड मेन (स्ट्रिंग [] आर्गस) {ट्राई {Class.forName ("com.mysql.jdbc.Driver"); कनेक्शन कॉन = DriverManager.getConnection (यूआरएल, "रूट", "रूट"); स्टेटमेंट एसटीएमटी = conn.createStatement (); स्ट्रिंग एसक्यूएल = "आईएनएसईआरटी आईएनटीओ एम्प1 वैल्यूज" ('पी. सी. टी. बी. 5361', 'किरिल', 'जॉन', 96866668) प्रकार वाणिज्यिक और मुफ्त ड्राइवर अधिकांश संबंधपरक-डेटाबेस सर्वरों को संपर्क प्रदान करते हैं। ये ड्राइवर निम्नलिखित प्रकारों में से एक में आते हैंः टाइप 1 जो स्थानीय रूप से उपलब्ध ODBC ड्राइवर के मूल कोड को कॉल करता है। (नोटः जे. डी. बी. सी. 4.2 में, जे. डी. बी. सी.-ओ. डी. बी. सी. ब्रिज को हटा दिया गया है) टाइप 2 जो क्लाइंट पक्ष पर डेटाबेस विक्रेता मूल पुस्तकालय को कॉल करता है। यह कोड फिर नेटवर्क पर डेटाबेस से बात करता है। टाइप 3, शुद्ध-जावा ड्राइवर जो सर्वर-साइड मिडलवेयर के साथ बात करता है जो फिर डेटाबेस से बात करता है। टाइप 4, शुद्ध-जावा ड्राइवर जो डेटाबेस नेटिव प्रोटोकॉल का उपयोग करता है। एक प्रकार को भी नोट करें जिसे आंतरिक जे. डी. बी. सी. ड्राइवर कहा जाता है-जावा-सक्षम एस. क्यू. एल. डेटाबेस में जे. आर. ई. के साथ अंतर्निहित एक ड्राइवर। इसका उपयोग जावा संग्रहित प्रक्रियाओं के लिए किया जाता है। यह उपरोक्त वर्गीकरण योजना में फिट नहीं बैठता है, हालांकि यह संभवतः या तो टाइप 2 या टाइप 4 ड्राइवर जैसा दिखता है (यह इस बात पर निर्भर करता है कि डेटाबेस स्वयं जावा में लागू किया गया है या नहीं)। इसका एक उदाहरण के. पी. आर. बी. (कर्नेल प्रोग्राम बंडल) ड्राइवर है जिसकी आपूर्ति ओरेकल आर. डी. बी. एम. एस. के साथ की जाती है। "जे. डी. बी. सी.: डिफ़ॉल्टः कनेक्शन" इस तरह के कनेक्शन बनाने का एक अपेक्षाकृत मानक तरीका प्रदान करता है (कम से कम ओरेकल डेटाबेस और अपाचे डर्बी इसका समर्थन करते हैं)। हालाँकि, एक आंतरिक जे. डी. बी. सी. ड्राइवर के मामले में, जे. डी. बी. सी. क्लाइंट वास्तव में एक्सेस किए जा रहे डेटाबेस के हिस्से के रूप में चलता है, और इसलिए नेटवर्क प्रोटोकॉल के बजाय सीधे डेटा तक पहुँच सकता है। स्रोत ओरेकल कुछ जे. डी. बी. सी. चालकों और विक्रेताओं की एक सूची प्रदान करता है और सिम्बा टेक्नोलॉजीज विभिन्न अनुप्रयोगों, डेटाबेस और वेब ए. पी. आई. के लिए किसी भी कस्टम/मालिकाना संबंधपरक डेटा स्रोत सी. डी. ए. टी. ए. सॉफ्टवेयर जहाजों के प्रकार 4 जे. डी. बी. सी. चालकों के लिए कस्टम जे. डी. बी. सी. चालकों के निर्माण के लिए एक एस. डी. के. भेजता है। एप्लिकेशन, डेटाबेस और वेब सेवाओं के लिए आर. एस. एस. बस टाइप 4 जे. डी. बी. सी. ड्राइवर डेटाडायरेक्ट टेक्नोलॉजीज सभी प्रमुख डेटाबेस के लिए तेज टाइप 4 जे. डी. बी. सी. ड्राइवरों का एक व्यापक सूट प्रदान करता है जो वे टाइप 5 आई. डी. एस. सॉफ्टवेयर के रूप में विज्ञापन करते हैं जो सभी प्रमुख डेटाबेस तक समवर्ती पहुंच के लिए टाइप 3 जे. डी. बी. सी. ड्राइवर प्रदान करता है। समर्थित विशेषताओं में परिणाम कैशिंग, एस. एस. एल. एन्क्रिप्शन, कस्टम डेटा स्रोत शामिल हैं, डी. बी. शील्ड जे. डी. बी. एक्सेस, माई. एस. क्यू. एल. और ओरेकल के लिए एक जावा दृढ़ता पुस्तकालय है जो जे. डी. बी. सी. जे. एन. ई. डी. डायरेक्ट के ऊपर एक आसान उपयोग करने योग्य ए. पी. आई. में प्रमुख डेटाबेस एक्सेस संचालन को परिभाषित करता है जो पूरी तरह से सन जे2ईई प्रमाणित उच्च-प्रदर्शन जे. डी. बी. सी. ड्राइवरों का एक सूट प्रदान करता है। जे. डी. बी. सी. आर. 4 स्कॉट क्लेमेंट द्वारा लिखा गया एक सेवा कार्यक्रम है जो आई. बी. एम. पर आर. पी. जी. से जे. डी. बी. सी. तक पहुँच की अनुमति देता है अर्थात एच. एस. क्यू. एल. डी. बी. जे. डी. बी. सी. चालक के साथ एक आर. डी. बी. एम. एस. है और बी. एस. डी. लाइसेंस के तहत उपलब्ध है। स्कीमा क्रॉलर एक ओपन सोर्स एपीआई है जो जे. डी. बी. सी. का लाभ उठाता है, और डेटाबेस मेटाडेटा को सादे पुराने जावा ऑब्जेक्ट्स (पी. ओ. जे. ओ.) के रूप में उपलब्ध कराता है जी. एन. यू. डेटा एक्सेस (जी. डी. ए.) जे. डी. बी. सी. फेकेड ओपन डेटाबेस कनेक्टिविटी (ओ. डी. बी. सी.) ऑब्जेक्ट-रिलेशनल मैपिंग (ओ. आर. एम.) उद्धरण संदर्भ बाहरी लिंक ए. पी. आई. जावाडॉक प्रलेखन ए. पी. आई. जावाडॉक प्रलेखन ओ/आर. ब्रोकर स्केला जे. डी. बी. सी. फ्रेमवर्क एस. क्यू. एल. टूल ओपन सोर्स, कमांड-लाइन, जेनेरिक जे. डी. बी. सी. क्लाइंट उपयोगिता। किसी भी जे. डी. बी. सी.-सहायक डेटाबेस के साथ काम करता है। जे. डी. बी. सी. यू. आर. एल. स्ट्रिंग्स और सभी डेटाबेस की संबंधित जानकारी। जावा प्लेटफ़ॉर्म जावा विनिर्देशन एसक्यूएल डेटा पहुँच जावा एपीआई डेटाबेस एपीआई का अनुरोध करता है