10


最近、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) Driver][mysqld-5.5.31]データベースが選択されていません

「getConnection」プロセス中にデータベースが選択されていると思ったので、問題が本当にわかりません....
次の行を追加してデータベースを選択しようとしました:

    stmt.executeUpdate("use test;");

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

残念ながら、構文を確認する必要があるという別の例外が発生したため、機能しませんでした。私のコマンドラインでは問題なく動作するため、それもわかりません... Java経由でこれらのタイプのコマンドを使用できるかどうかはわかりません。そうでない場合は、私の間違いを許してください。

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

私の問題に返信して時間を割いてくれたすべての人にすでに感謝しています!

ps。いくつかの重要な情報を指摘するのを忘れた場合 (指摘しなかったと思います)、質問してください:)

編集:実行時に新しいデータベースも作成しようとしました

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

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

4

3 に答える 3

8

まず、MySQL データベースと接続するための別のより良い方法を示すために私の答えを検討しています
いくつかの手順を実行する必要があります:

  1. Connector/Jをダウンロードして、クラス パスに追加します (IDE を使用している場合は、ライブラリに が追加されているか、 YouTube.jarに多くのチュートリアルがあります)。
  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();
      }
    }
    
于 2013-06-04T22:40:51.063 に答える
1

これがあなたの更新された例です。これは私にとってはうまくいきます。

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-connector をビルド パスに追加したことを確認してください。私は以下を使用しました:mysql-connector-java-5.1.24-bin.jar

于 2013-06-04T22:34:48.887 に答える