यहां चरण-दर-चरण स्पष्टीकरण दिया गया है कि MySQL और JDBC कैसे स्थापित करें और इसका उपयोग कैसे करें:
-
डाउनलोड करें और MySQL सर्वर स्थापित करें . बस इसे सामान्य तरीके से करें। पोर्ट नंबर याद रखें जब भी आपने इसे बदला है। यह डिफ़ॉल्ट रूप से होता है
3306
। -
डाउनलोड करें JDBC ड्राइवर और क्लासपाथ में डाल दिया , ज़िप फ़ाइल निकालें और युक्त JAR फ़ाइल को क्लासपाथ में रखें। विक्रेता-विशिष्ट JDBC ड्राइवर जेडीबीसी एपीआई (यहां ट्यूटोरियल )
यदि आप एक्लिप्स या नेटबीन्स जैसे आईडीई का उपयोग कर रहे हैं, तो आप इसे JAR फ़ाइल को लाइब्रेरी के रूप में जोड़कर क्लासपाथ में जोड़ सकते हैं बिल्ड पथ . के लिए परियोजना के गुणों में।
यदि आप इसे कमांड कंसोल में "सादा वेनिला" कर रहे हैं, तो आपको
-cp
में JAR फ़ाइल का पथ निर्दिष्ट करना होगा या-classpath
अपने जावा एप्लिकेशन को निष्पादित करते समय तर्क।java -cp .;/path/to/mysql-connector.jar com.example.YourClass
.
वर्तमान . जोड़ने के लिए बस है डायरेक्टरी को क्लासपाथ में भी ताकि वहcom.example.YourClass
. का पता लगा सके और;
क्लासपाथ विभाजक है जैसा कि विंडोज़ में है। यूनिक्स और क्लोनों में:
इस्तेमाल किया जाना चाहिए। -
एक डेटाबेस बनाएं MySQL में . आइए एक डेटाबेस बनाते हैं
javabase
. बेशक आप विश्व प्रभुत्व चाहते हैं, तो चलिए UTF-8 का भी उपयोग करते हैं।CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-
एक उपयोगकर्ता बनाएं जावा और अनुदान के लिए यह एक्सेस करता है . केवल इसलिए कि
root
. का उपयोग कर रहे हैं एक बुरा अभ्यास है।CREATE USER 'java'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON javabase.* TO 'java'@'localhost' IDENTIFIED BY 'password';
हां,
java
उपयोगकर्ता नाम औरpassword
है पासवर्ड यहाँ है। -
निर्धारित करें JDBC URL . जावा का उपयोग करके MySQL डेटाबेस को जोड़ने के लिए आपको निम्नलिखित सिंटैक्स में एक JDBC URL की आवश्यकता है:
jdbc:mysql://hostname:port/databasename
-
hostname
:होस्टनाम जहां MySQL सर्वर स्थापित है। यदि यह उसी मशीन पर स्थापित है जहां आप जावा कोड चलाते हैं, तो आप बसlocalhost
का उपयोग कर सकते हैं . यह एक IP पता भी हो सकता है जैसे127.0.0.1
. यदि आप कनेक्टिविटी समस्याओं का सामना करते हैं और127.0.0.1
. का उपयोग कर रहे हैंlocalhost
के बजाय इसे हल किया, तो आपको अपने नेटवर्क/डीएनएस/होस्ट कॉन्फ़िगरेशन में कोई समस्या है। -
port
:टीसीपी/आईपी पोर्ट जहां MySQL सर्वर सुनता है। यह डिफ़ॉल्ट रूप से होता है3306
। -
databasename
:उस डेटाबेस का नाम जिससे आप कनेक्ट करना चाहते हैं। वह हैjavabase
।
तो अंतिम URL इस तरह दिखना चाहिए:
jdbc:mysql://localhost:3306/javabase
-
-
कनेक्शन की जांच करें जावा का उपयोग करके MySQL के लिए .
main()
. के साथ एक साधारण जावा क्लास बनाएं कनेक्शन का परीक्षण करने की विधि।String url = "jdbc:mysql://localhost:3306/javabase"; String username = "java"; String password = "password"; System.out.println("Connecting database..."); try (Connection connection = DriverManager.getConnection(url, username, password)) { System.out.println("Database connected!"); } catch (SQLException e) { throw new IllegalStateException("Cannot connect the database!", e); }
यदि आपको
SQLException: No suitable driver
मिलता है , तो इसका मतलब है कि या तो JDBC ड्राइवर को बिल्कुल भी ऑटोलोड नहीं किया गया था या JDBC URL गलत है (अर्थात यह किसी भी लोडेड ड्राइवर द्वारा पहचाना नहीं गया था)। आम तौर पर, जब आप इसे रनटाइम क्लासपाथ में छोड़ते हैं तो एक जेडीबीसी 4.0 ड्राइवर को स्वत:लोड किया जाना चाहिए। एक और दूसरे को बाहर करने के लिए, आप इसे हमेशा नीचे के रूप में मैन्युअल रूप से लोड कर सकते हैं:System.out.println("Loading driver..."); try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("Driver loaded!"); } catch (ClassNotFoundException e) { throw new IllegalStateException("Cannot find the driver in the classpath!", e); }
ध्यान दें कि
newInstance()
कॉल नहीं है यहाँ की जरूरत है। यह सिर्फ पुराने और छोटी गाड़ी को ठीक करने के लिए हैorg.gjt.mm.mysql.Driver
. स्पष्टीकरण यहाँ . अगर यह लाइनClassNotFoundException
फेंकती है , तो JDBC ड्राइवर वर्ग वाली JAR फ़ाइल को केवल क्लासपाथ में नहीं रखा जाता है।ध्यान दें कि आपको ड्राइवर को हर बार लोड करने की आवश्यकता नहीं है पहले जोड़ना। एप्लिकेशन स्टार्टअप के दौरान केवल एक बार ही पर्याप्त है।
अगर आपको
SQLException: Connection refused
मिलता है याConnection timed out
या एक MySQL विशिष्टCommunicationsException: Communications link failure
, तो इसका मतलब है कि डीबी बिल्कुल भी उपलब्ध नहीं है। इसके निम्न में से एक या अधिक कारण हो सकते हैं:- JDBC URL में IP पता या होस्टनाम गलत है।
- JDBC URL में होस्टनाम स्थानीय DNS सर्वर द्वारा मान्यता प्राप्त नहीं है।
- जेडीबीसी यूआरएल में पोर्ट नंबर गुम या गलत है।
- डीबी सर्वर डाउन है।
- DB सर्वर TCP/IP कनेक्शन स्वीकार नहीं करता है।
- DB सर्वर के कनेक्शन समाप्त हो गए हैं।
- जावा और डीबी के बीच में कुछ कनेक्शन अवरुद्ध कर रहा है, उदा। फ़ायरवॉल या प्रॉक्सी।
एक या दूसरे को हल करने के लिए, निम्नलिखित सलाह का पालन करें:
ping
के साथ उन्हें सत्यापित और परीक्षण करें ।- DNS को रीफ्रेश करें या इसके बजाय JDBC URL में IP पते का उपयोग करें।
my.cnf
. के आधार पर इसे सत्यापित करें MySQL डीबी का।- डीबी प्रारंभ करें।
- सत्यापित करें कि क्या mysqld को
--skip-networking option
के बिना शुरू किया गया है । - डीबी को पुनरारंभ करें और तदनुसार अपना कोड ठीक करें कि यह
finally
में कनेक्शन बंद कर देता है । - फ़ायरवॉल अक्षम करें और/या पोर्ट को अनुमति/अग्रेषित करने के लिए फ़ायरवॉल/प्रॉक्सी कॉन्फ़िगर करें।
ध्यान दें कि
Connection
को बंद करना अत्यंत है जरूरी। यदि आप कनेक्शन बंद नहीं करते हैं और थोड़े समय में उनमें से बहुत से प्राप्त करते रहते हैं, तो डेटाबेस कनेक्शन से बाहर हो सकता है और आपका एप्लिकेशन टूट सकता है। हमेशाConnection
प्राप्त करें एकtry-with-resources
में कथन . या यदि आप अभी तक Java 7 पर नहीं हैं, तो इसे स्पष्ट रूप सेfinally
में बंद कर दें एकtry-finally
खंड मैथा।finally
में बंद हो रहा है यह सिर्फ यह सुनिश्चित करने के लिए है कि यह अपवाद के मामले में भी बंद हो जाए। यहStatement
. पर भी लागू होता है ,PreparedStatement
औरResultSet
।
यह वह था जहां तक कनेक्टिविटी की चिंता थी। आपको यहां मिल सकता है एक बुनियादी डीएओ वर्ग की मदद से डेटाबेस में पूर्ण योग्य जावा मॉडल ऑब्जेक्ट को लोड और स्टोर करने का एक अधिक उन्नत ट्यूटोरियल।
डीबी कनेक्शन के लिए सिंगलटन पैटर्न का उपयोग करना एक खराब तरीका है। अन्य प्रश्नों के बीच देखें:http://stackoverflow.com/q/9428573/ . यह एक #1 शुरुआत करने वाली गलती है।