2013-06-04 8 views
5


पिछले दिनों मैं कैसे जावा के माध्यम से डेटाबेस का उपयोग करने की जानने की कोशिश कर रहा था। मैं ड्राइवर लोड और डेटाबेस से संबंध प्राप्त करने में सक्षम हूँ (कम से कम मुझे ऐसा लगता है, के बाद से मैं एक अपवाद वहाँ नहीं मिलता है ..)java.sql.SQLException: कोई डेटाबेस चयनित नहीं - क्यों?

कोड है:

import java.sql.*; 
    public class test 
    { 
     public static void main(String[] args) 
     { 
      try 
      { 
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
       System.out.println("driver loaded..."); 
      } 
      catch(ClassNotFoundException e){ 
       System.out.println("Error in loading the driver..."+e); 
       System.exit(0); 
      } 
      try 
      { 
       Connection dbConnection= DriverManager.getConnection("jdbc:odbc:test","root","password"); 
       System.out.println("Connection successful..."); 
       Statement stmt = dbConntection.createStatement(); 
       stmt.executeUpdate("create table Accounts (name char(20))"); 
      } 
      catch(SQLException e) 
      { 
        System.out.println("database-ConnectionError: "+e); 
        System.exit(0); 
      } 
     } 
    } 

जब मैं इसे निष्पादित, यह कहते हैं:

driver loaded...
Connection successful...
database-ConnectionError: java.sql.SQLException: [MySQL][ODBC 5.2(w) Driver][mysqld-5.5.31]No database selected

मैं वास्तव में समस्या पता नहीं है, क्योंकि मैंने सोचा डेटाबेस "getConnection" प्रक्रिया के दौरान चयन किया जाता है ....
मैं जोड़कर एक डेटाबेस का चयन करने की कोशिश की यह रेखा:

stmt.executeUpdate("use test;"); 

स्टेटमेंट बनाने के बाद।

दुर्भाग्य से यह काम नहीं किया क्योंकि मैं एक और अपवाद जो कहा मैं वाक्य रचना पर जांच होनी चाहिए मिला है। मुझे समझ में नहीं आता है कि या तो क्योंकि मेरी कमांडलाइन में यह ठीक काम करता है ... मुझे नहीं पता कि जावा के माध्यम से इन प्रकार के आदेशों का उपयोग करना संभव है, इसलिए यदि यह नहीं है, तो कृपया मेरी गलती को क्षमा करें।

मुझे आशा है कि आप मेरी मदद कर सकते हैं और मैं अपने ही खोज के दौरान समाधान याद नहीं किया!

पहले से ही सब जो जवाब दें और अपनी समस्याओं पर अपने समय का उपयोग करने के लिए धन्यवाद!

ps। अगर मैं कुछ महत्वपूर्ण infos का कहना भूल गया (मुझे नहीं लगता कि मैंने किया) कहें :)

संपादित करें: मैं भी क्रम

 stmt.executeUpdate("CREATE DATABASE test;"); 

यह वास्तव में काम करता है के दौरान एक नया डेटाबेस बनाने की कोशिश की है, लेकिन डेटाबेस या तो चयनित नहीं किया जाएगा ...

+0

एक अलग रूप में के रूप में: एक JDBC ड्राइवर के साथ, आप 'उपयोग की तरह आदेशों का उपयोग नहीं करना चाहिए 'डेटाबेस के बीच स्विच करने के लिए। इसके बजाय आपको 'setCatalog' और/या' setSchema' का उपयोग करना चाहिए (या कनेक्शन स्ट्रिंग में डेटाबेस निर्दिष्ट करें)। '' का उपयोग करके ड्राइवर के गलत व्यवहार का कारण बन सकता है। –

उत्तर

6

सबसे पहले, मैं तुम्हें MySQL डाटाबेस के संबंध के लिए एक और बेहतर तरीके से दिखाने के लिए मेरा उत्तर पर विचार कर रहा हूँ, यह बहुत आसान और कम है nu-उम्मीद अपवाद (रों)
आप कुछ कदम क्या करने की जरूरत:

  1. डाउनलोड Connector/J और अपनी कक्षा पथ में जोड़ने (यदि आप एक IDE वहाँ है प्रयोग कर रहे हैं पुस्तकालय के लिए .jar जोड़ सकते हैं या वहाँ YouTube पर कई tuts है)।
  2. अपने MySQL प्रोग्राम में अपना डेटाबेस बनाएं।
  3. नीचे मैं आपके लिए बनाया उदाहरण नीचे इस उदाहरण देखें दर्शाता MySQL पर कनेक्ट करने और निष्पादित करने के लिए कैसे प्रश्नों:

    import java.sql.*; 
    
    public class MySqlConnection { 
        private String MYSQL_DRIVER = "com.mysql.jdbc.Driver"; 
        private String MYSQL_URL = "jdbc:mysql://localhost:3306/test"; 
    
        private Connection con; 
        private Statement st; 
        private ResultSet rs; 
    
        public MySqlConnection() { 
    
        try { 
         Class.forName(MYSQL_DRIVER); 
         System.out.println("Class Loaded...."); 
         con = DriverManager.getConnection(MYSQL_URL,"",""); 
         System.out.println("Connected to the database...."); 
         st = con.createStatement(); 
         int c =st.executeUpdate("CREATE TABLE Accounts (Name VARCHAR(30))"); 
         System.out.println("Table have been created."); 
         System.out.println(c+" Row(s) have been affected"); 
         con.close(); 
    
        } catch(ClassNotFoundException ex) { 
         System.out.println("ClassNotFoundException:\n"+ex.toString()); 
         ex.printStackTrace(); 
    
        } catch(SQLException ex) { 
         System.out.println("SQLException:\n"+ex.toString()); 
         ex.printStackTrace(); 
        } 
        } 
    
        public static void main(String...args) { 
        new MySqlConnection(); 
        } 
    } 
    
+0

धन्यवाद काम भी करता है! मुझे लगता है कि यह मेरे कनेक्टर के साथ एक अजीब समस्या थी ... – sepphuber3

+0

@ sepphuber3: आपका स्वागत है, शायद और शायद ओडीबीसी (सुनिश्चित नहीं) :)। – Azad

4

इससे पहले कि आप एक मेज जोड़ सकते हैं, आपको पहले एक डेटाबेस का चयन करने के लिए है। आप के साथ एक नया डेटाबेस बना सकते हैं:

CREATE DATABASE database_name 

आप के साथ एक विशेष डेटाबेस से कनेक्ट कर सकते हैं:

String url = "jdbc:mysql://localhost/databasename"; 
String username = "test"; 
String password = "test"; 
Connection connection = DriverManager.getConnection(url, username, password); 
+0

मुझे वही समस्या मिली है। क्षमा करें मैं यह कहना भूल गया कि ... एक डेटाबेस बनाया गया है लेकिन अभी भी चयनित नहीं है .. मैं यह कैसे कर सकता हूं? – sepphuber3

+0

मैं यूआरएल को जोड़कर अपने डेटाबेस से कनेक्ट करता हूं, जहां आप डेटाबेस नाम से कनेक्ट करते हैं यदि आप लोकलहोस्ट, लोकलहोस्ट/डाटाबेसनाम –

+0

चला रहे हैं, तो मैं अपने डेटाबेस से कनेक्ट होने के साथ अद्यतन उत्तर चला रहा हूं। यह विधि मेरे कार्यक्रम में ठीक काम करती है। –

0

यहाँ अपने अद्यतन उदाहरण है, जो मेरे लिए काम करता है।

public static void main(String[] args) throws InstantiationException, 
     IllegalAccessException { 
    try { 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     System.out.println("driver loaded..."); 
    } catch (ClassNotFoundException e) { 
     System.out.println("Error in loading the driver..." + e); 
     System.exit(0); 
    } 
    try { 
     Connection dbConnection = DriverManager 
       .getConnection("jdbc:mysql://localhost/test?user=root&password=password"); 
     System.out.println("Connection successful..."); 
     Statement stmt = dbConnection.createStatement(); 
     stmt.executeUpdate("create table Accounts (name char(20))"); 
    } catch (SQLException e) { 
     System.out.println("database-ConnectionError: " + e); 
     System.exit(0); 
    } 
} 

सुनिश्चित करें कि आपने अपने निर्माण पथ में उचित MySQL-कनेक्टर जोड़ा है। मैं प्रयोग किया है: mysql-connector-java-5.1.24-bin.jar

+0

धन्यवाद! मैं कल इस्तेमाल किए गए कनेक्टर को आजमाउंगा! मुझे उम्मीद है कि मैं इसे चलाने के लिए ला सकता हूं ^^ – sepphuber3

+0

अभी इसे अभी चेक किया है :) ठीक काम करता है धन्यवाद !! – sepphuber3

संबंधित मुद्दे