प्रत्येक जेडीबीसी 4 अनुपालन चालक के पास META-INF/services/java.sql.Driver
नामक अपने जार में एक फ़ाइल है, उस फ़ाइल में यह java.sql.Driver
के कार्यान्वयन की सूची देगा। जब आप किसी कनेक्शन का अनुरोध करते हैं, तो DriverManager
क्लासपाथ में META-INF/services/java.sql.Driver
की सभी (!) प्रतियों को खोजने के लिए ServiceLoader
का उपयोग करेगा और फिर सूचीबद्ध सभी वर्गों को लोड करेगा। जब java.sql.Driver
कक्षा लोड हो जाती है, तो उसे DriverManager
के साथ स्वयं पंजीकृत करना होगा, इसलिए DriverManager
सर्विस लोडर का उपयोग करके सभी कक्षाओं को लोड करता है, और प्रत्येक Driver
कार्यान्वयन स्वयं पंजीकृत करता है।
जब आप DriverManager
से कनेक्शन का अनुरोध करते हैं, तो DriverManager
उन सभी पंजीकृत ड्राइवरों पर पुन: सक्रिय होगा जो उन्हें Connection
के लिए पूछते हैं। यह ड्राइवर यह जांचने के लिए जेडीबीसी यूआरएल का उपयोग करेगा कि यह प्रोटोकॉल का समर्थन करता है (उदाहरण के लिए जेबर्ड/फायरबर्ड जेडीबीसी जांच करता है कि यूआरएल "jdbc:firebirdsql:"
या "jdbc:firebird:"
से शुरू होता है)। यदि ड्राइवर प्रोटोकॉल का समर्थन नहीं करता है, तो यह null
लौटाएगा, अगर यह प्रोटोकॉल का समर्थन करता है तो यह या तो एक स्थापित कनेक्शन लौटाएगा, या यह SQLException
फेंक देगा (उदाहरण के लिए यदि आपने यूआरएल में कोई त्रुटि की है, या यह नहीं हो सका जुडिये)। यदि सभी चालकों null
वापसी (कोई नहीं प्रोटोकॉल का समर्थन), तो DriverManager
त्रुटि के साथ एक SQLException
फेंक होगा "No suitable driver found for <url>"
तो classpath पर एक से अधिक चालकों होने नहीं करता है बात जब तक वे अलग प्रोटोकॉल का समर्थन के रूप में, हालांकि, अगर वहाँ के लिए कई ड्राइवरों हैं एक ही डेटाबेस (या कम से कम: समान प्रोटोकॉल उपसर्ग), यह ड्राइवरों की सूची में सबसे पहले उपयोग करेगा, और यदि वह ड्राइवर SQLException
के साथ विफल रहता है, तो यह दूसरे की कोशिश नहीं करेगा।
स्रोत
2013-08-18 08:54:17
आपको ड्राइवर की आवश्यकता क्यों है? –
आप डेटाबेस से और कैसे कनेक्ट करेंगे। परंपरागत रूप से हम कक्षा करते हैं। फोर्ननाम (ड्राइवर)। –
@atamanroman मेरे पास आपको बताने के लिए कुछ भी नहीं है, अपने शब्दकोष को SO से बाहर रखें। –