मैं एक्लिप्स, माईएसक्यूएल वर्कबेंच, और जेडीबीसी 8.0.11 का उपयोग कर डेटाबेस में टेक्स्ट फ़ाइल के डेटा को लाने के लिए कोड लिखने की कोशिश कर रहा हूं। यह मुझे ClassNotFoundException दे रहा है। मैंने कई अन्य प्रश्नों को देखा है, और उन सभी को DriverManager.getConnection पैरामीटर के अंदर java\com\mysql\jdbc\Driver.java डालकर ठीक कर दिया गया है। मैंने पहले ही ऐसा कर लिया है, और यह अभी भी मुझे एक त्रुटि दे रहा है। किसी के पास कोई विचार है कि मुझे अभी भी यह त्रुटि क्यों मिल रही है?

public static void main(String[] args) throws Exception{
    Class.forName                                                                   //Register JDBC Driver
    ("*mysql-connector-java-8.0.11.\\src\\legacy\\java\\com\\mysql\\jdbc\\Driver.java*")
    .newInstance();  

    conn =      DriverManager.getConnection (url, user, pass);   
    Statement stmt = conn.createStatement();
    String mysql1 = "UPDATE Policy SET " + readAndArray                         //Changeable file path
            ("filepath"); 

    }

नया संपादन

@zlakad की सलाह के बाद, यह पता चला है कि यदि आपके पास जावा 6 या उच्चतर है तो आपको Class.forName() का उपयोग करने की आवश्यकता नहीं है। हालांकि, अब मेरे पास एक नई त्रुटि है: SQLNonTransientConnectionException अंतर्निहित RongArgumentException के कारण। मैं हैरान हूं कि यह ऐसा क्यों करता है क्योंकि मैं DriverManager.getConnection के लिए गलत पैरामीटर का उपयोग नहीं कर रहा हूं। कोई सुझाव?

String url = "file path";         //Changeable for MySQL DB
String user = "root";
String pass = "password";

public static void getConnection() throws Exception { 

    Connection conn = DriverManager.getConnection(url, user, pass);   
    Statement stmt = conn.createStatement();
0
hpotter_otter 23 जुलाई 2018, 20:33
एक जार एक वर्ग नहीं है।
 – 
van dench
23 जुलाई 2018, 20:37
आपकी कक्षा का नाम com.mariadb.jdbc.driver होना चाहिए; मुझे लगता है कि आप ओपन सोर्स मारियाडीबी का उपयोग कर रहे हैं।
 – 
duffymo
23 जुलाई 2018, 20:39
साथ ही, आपको कनेक्टर को पंजीकृत करने की आवश्यकता नहीं है: क्विक लुक
 – 
zlakad
23 जुलाई 2018, 20:42
मैं अपनी फाइलों में ड्राइवर खोजने के बारे में कैसे जाउंगा?
 – 
hpotter_otter
23 जुलाई 2018, 20:45
निश्चित रूप से ड्राइवर नामक एक वर्ग के लिए जेडीबीसी ड्राइवर जेएआर में देखें।
 – 
duffymo
23 जुलाई 2018, 20:46

3 जवाब

ये कोशिश करें:

// None of this belongs in a main method. 
public static void main(String[] args) throws Exception {
    Class.forName("com.mysql.jdbc.Driver");     
    // where are url, user, pass set?  I don't see them.   
    Connection conn = DriverManager.getConnection(url, user, pass);
    Statement stmt = conn.createStatement();
    // this is simply wrong.
    String mysql1 = "UPDATE Policy SET " + readAndArray("filepath");
}

आप Java और JDBC में नए हैं। ऐसा करने का यह एक अच्छा तरीका नहीं है। मैं अनुशंसा करता हूं कि आप इसे बेहतर तरीके से कैसे करें इसके कुछ उदाहरणों के लिए वेब और SO खोजें।

1
The Impaler 23 जुलाई 2018, 23:04
2
MySQL 8.0 के लिए आपको नए ड्राइवर वर्ग com.mysql.cj.jdbc.Driver की आवश्यकता है। नहीं तो शिकायत करेंगे।
 – 
The Impaler
23 जुलाई 2018, 23:03
और सुनिश्चित करें कि आपका ड्राइवर (जार फ़ाइल) इसे चलाते समय क्लासपाथ में है।
 – 
The Impaler
23 जुलाई 2018, 23:06

कनेक्शन के लिए आपको ड्राइवर वर्ग लोड करना होगा, उस वर्ग की जार फ़ाइल नहीं

आपको यह कोशिश करनी चाहिए:

Class.forName("com.mysql.jdbc.Driver");
1
The Impaler 23 जुलाई 2018, 23:05
MySQL 8.0 के लिए आपको नए ड्राइवर वर्ग com.mysql.cj.jdbc.Driver की आवश्यकता है। नहीं तो शिकायत करेंगे।
 – 
The Impaler
23 जुलाई 2018, 23:05

मैं DriverManager.getConnection() में डेटाबेस यूआरएल के लिए गलत प्रारूप का उपयोग कर रहा था;

मैंने अपना यूआरएल एक jdbc:mysql://host:3306/ में बदल दिया और यह काम कर गया।

String url = "jdbc:mysql://*host*:3306/";
Connection conn = DriverManager.getConnection(url, user, pass);
0
hpotter_otter 25 जुलाई 2018, 16:58