2013-06-04 13 views
5


最後に、私はJavaでmySQLデータベースにアクセスする方法を学びました。 私はドライバをロードし、データベースへの接続を取得することができています(私はそこに例外を取得しないので、少なくとも私はそう思う...)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;"); 

ステートメントを作成した後。

残念ながら、私は構文をチェックすべきだと言った別の例外があるので、それはうまくいきませんでした。私はそれが私のコマンドラインでうまく動作するのでどちらかを理解していない... Javaを介してこれらのコマンドの種類を使用することが可能かどうかわからないので、私の間違いを許してください。

私はあなたを助けてくれることを願っています。私は自分の検索で解決策を見逃すことはありませんでした。

すでに返信して問題に時間を費やしてくれたすべての方に感謝します。

ps。私も

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

が実際に動作します。この実行時に新しいデータベースを作成しようとしたが、私はいくつかの重要なに関する情報を指摘するのを忘れた場合:)

編集を依頼してください(私は私がやったとは思いません)データベースは選択されません。

+0

:JDBCドライバでは、 '使用のようなコマンドを使用しないでください 'を使用してデータベースを切り替えることができます。代わりに、 'setCatalog'や' setSchema'を使うか、接続文字列でデータベースを指定してください。 'use 'を使用すると、ドライバの動作が正しくない可能性があります。 –

答えて

6

、それははるかに簡単かつ少ないNU-予想例外(複数可)です。
あなたは、いくつかの手順を実行する必要があります(あなたはIDEを使用している場合.jarがライブラリに追加があり、またはYouTube上の多くのtutsがある)

  1. ダウンロードConnector/Jとあなたのクラスパスに追加します。
  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:あなたの歓迎、たぶんおそらくODBC(わからない):)。 – 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

ローカルホストlocalhost/databasenameを実行している場合は、データベース名に接続するURLを追加してデータベースに接続します。 –

+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データベースとの接続のための別のより良い方法を示すために私の答えを検討していますmysql-connector-java-5.1.24-bin.jar

+0

ありがとうございます!明日使ったコネクタを試してみます!私は本当に私がそれを実行させることができることを願っています^^ – sepphuber3

+0

ちょうどそれをチェックしました:)もう一度うまくいく! – sepphuber3

関連する問題