1. ホーム
  2. java

[解決済み] [Solved] java.sql.SQLException: データベースが選択されていません - なぜですか?

2022-02-13 09:03:52

質問


ここ数日、私はJava経由でmySQLデータベースにアクセスする方法を学ぼうとしていました。 私はドライバをロードし、データベースへの接続を取得することができます(私は例外を取得しないので、少なくとも私はそう思う...)。

というコードです。

    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);
             }   
        }
    }

実行すると、こうなります。

ドライバが読み込まれました...
接続成功...
database-ConnectionError: java.sql.SQLException: [MySQL][ODBC 5.2(w)ドライバ][mysqld-5.5.31]選択されたデータベースがありません。

データベースはquot;getConnection"の処理中に選択されると思っていたので、本当に問題がわかりません...。
この行を追加して、データベースを選択しようとしました。

    stmt.executeUpdate("use test;");

を作成した後、Statementを作成します。

というのも、別の例外が発生して、構文をチェックするように言われたからです。私のコマンドラインでは問題なく動作しているので、それも理解できません...。 このタイプのコマンドをJava経由で使用することが可能かどうかはわかりませんので、もし可能でなければ、私の間違いをお許しください。

私自身の検索中に解決策を見逃すことなく、助けていただけると幸いです

もう、私の問題に返信してくれたり、時間を使ってくれたりするすべての人に感謝します!(笑)

ps. もし私が重要な情報を指摘するのを忘れていたら(忘れていないと思いますが)聞いてください:)

edit: 実行中に新しいデータベースを作成することも試してみました。

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

これは実際に動作しますが、データベースも選択されません...。

解決方法は?

最初に、私はMySQLデータベースとの接続のための別の良い方法を示すために私の答えを考えています、それははるかに簡単で、より少ないニュアンスです 例外 .
いくつかの手順を行う必要があります。

  1. ダウンロード コネクタ/J をクラスパスに追加してください。 .jar をライブラリに追加したり、あるいは YouTube ).
  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();
      }
    }