सोच रहा था कि क्यों Class.forName("com.mysql.jdbc.Driver");
और Class.forName("com.mysql.jdbc.Driver").newInstance();
काम करते हैं जब मैं डेटाबेस से कनेक्ट करने के लिए उनका उपयोग करता हूं। ठीक है, पूर्व में काम नहीं करना चाहिए, क्योंकि कोई नया उदाहरण नहीं बनाया गया था। और फिर भी, यह अभी भी काम करता है। मैं netbeans 6.9.1 का उपयोग कर। आपके सहयोग के लिए धन्यवाद!जेडीबीसी कनेक्शन- क्लास .forनाम बनाम क्लास .forName()। नया इंस्टेंस?
उत्तर
Class.forName("xxx")
डेटाबेस से कनेक्शन नहीं बनाता है, यह सिर्फ जेडीबीसी ड्राइवर लोड करता है और इसे पंजीकृत करता है ताकि बाद में DriverManager.getConnection(...)
कॉल काम करे। ड्राइवर को इंस्टेंट करना आवश्यक नहीं है।
जेडीबीसी 4.0 का समर्थन करने वाले ड्राइवर के साथ आपको क्लास.forनाम() की भी आवश्यकता नहीं है। चालक को मक्खी पर लोड करने के लिए निर्मित तंत्र में होना चाहिए, जब ड्राइवर प्रबंधक इसके लिए देखता है।
(रेफरी: http://download.oracle.com/javase/6/docs/api/java/sql/DriverManager.html) चालक प्रबंधक विकल्प प्राप्त करें कनेक्शन और प्राप्तकर्ता जावा मानक संस्करण सेवा प्रदाता तंत्र का समर्थन करने के लिए बढ़ाए गए हैं। जेडीबीसी 4.0 ड्राइवर्स में फ़ाइल मेटा-आईएनएफ/सेवाएं/java.sql.Driver शामिल होना चाहिए। इस फ़ाइल में java.sql.Driver के जेडीबीसी ड्राइवर कार्यान्वयन का नाम शामिल है।
my.sql.Driver
आवेदन अब आवश्यकता नहीं है explictly रहे हैं: उदाहरण के लिए, my.sql.Driver वर्ग लोड करने के लिए, META-INF/सेवाओं/java.sql.Driver फ़ाइल प्रविष्टि होते हैं Class.forName() का उपयोग कर जेडीबीसी ड्राइवर लोड करें। मौजूदा प्रोग्राम जो वर्तमान में क्लास.forनाम() का उपयोग कर जेडीबीसी ड्राइवर लोड करते हैं, बिना संशोधन के काम करना जारी रखेंगे।
धन्यवाद! एक आखिरी क्यूएन- यदि आप इसे तुरंत चालू करते हैं, तो बाद में DriverManager.getConnection (..) फिर से इसे फिर से चालू नहीं करेगा, सही? यह ऐसा ही करेगा यदि आपने इसे पहले चरण में तुरंत चालू नहीं किया था? – OckhamsRazor
मुझे संदेह है कि कक्षा को लोड करके, चालक प्रबंधक ने इसे तुरंत चालू कर दिया है, ड्राइवर में एक स्थिर ब्लॉक द्वारा ट्रिगर किया गया है। ईमानदार होने के लिए, मुझे पूरी तरह से यकीन नहीं है। यदि आप उस ड्राइवर का उपयोग करना चाहते हैं जिसे आपने तुरंत चालू किया है (उदा। इसके आसपास लपेटने के लिए), तो आपको कनेक्शन प्राप्त करने के लिए ड्राइवर प्रबंधक का उपयोग करने से बचने की आवश्यकता है, या DriverManager स्थिर विधियों का उपयोग करके अपना स्वयं का ड्राइवर उदाहरण पंजीकृत करना होगा। – araqnid