sql >> データベース >  >> RDS >> Mysql

JavaをMySQLデータベースに接続します

    MySQLとJDBCをインストールする方法とその使用方法を段階的に説明します。

    1. ダウンロード MySQLサーバーをインストールします 。通常の方法で行ってください。ポート番号を変更するときはいつでも覚えておいてください。デフォルトでは3306

    2. ダウンロード JDBCドライバーとクラスパスに入れます 、ZIPファイルを抽出し、含まれているJARファイルをクラスパスに配置します。ベンダー固有のJDBCドライバーは、 JDBC API ここのチュートリアル )。

      EclipseやNetbeansなどのIDEを使用している場合は、JARファイルをライブラリとして追加することで、それをクラスパスに追加できます。 ビルドパスへ プロジェクトのプロパティで。

      コマンドコンソールで「プレーンバニラ」を実行している場合は、 -cpでJARファイルへのパスを指定する必要があります。 または-classpath Javaアプリケーションを実行するときの引数。

      java -cp .;/path/to/mysql-connector.jar com.example.YourClass

      現在を追加するだけです com.example.YourClass を見つけることができるように、クラスパスへのディレクトリも および; Windowsの場合と同様に、クラスパスセパレータです。 Unixおよびクローンの場合 使用する必要があります。

    3. データベース を作成します MySQLで 。データベースを作成しましょうjavabase 。もちろん、World Dominationが必要なので、UTF-8も使用しましょう。

      CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
      
    4. ユーザーを作成する Javaおよび付与 の場合 アクセス rootを使用しているという理由だけで 悪い習慣です。

      CREATE USER 'java'@'localhost' IDENTIFIED BY 'password';
      GRANT ALL ON javabase.* TO 'java'@'localhost' IDENTIFIED BY 'password';
      

      はい、 java はユーザー名とパスワードです ここでのパスワードです。

    5. 決定> JDBC URL 。 Javaを使用してMySQLデータベースに接続するには、次の構文のJDBCURLが必要です。

      jdbc:mysql://hostname:port/databasename
      • ホスト名 :MySQLサーバーがインストールされているホスト名。 Javaコードを実行するのと同じマシンにインストールされている場合は、 localhostを使用できます。 。 127.0.0.1のようなIPアドレスにすることもできます 。接続の問題が発生し、 127.0.0.1を使用している場合 localhostの代わりに それを解決した後、ネットワーク/DNS/ホストの構成に問題があります。

      • ポート :MySQLサーバーがリッスンするTCP/IPポート。これはデフォルトで3306

      • データベース名 :接続するデータベースの名前。それがjavabase

      したがって、最終的なURLは次のようになります。

      jdbc:mysql://localhost:3306/javabase
    6. 接続をテストする> Javaを使用してMySQLに main()を使用して単純なJavaクラスを作成します 接続をテストする方法。

      String url = "jdbc:mysql://localhost:3306/javabase";
      String username = "java";
      String password = "password";
      
      System.out.println("Connecting database...");
      
      try (Connection connection = DriverManager.getConnection(url, username, password)) {
          System.out.println("Database connected!");
      } catch (SQLException e) {
          throw new IllegalStateException("Cannot connect the database!", e);
      }
      

      SQLException:適切なドライバーがありませんが発生した場合 、それは、JDBCドライバーがまったく自動ロードされなかったか、JDBC URLが間違っている(つまり、ロードされたドライバーのいずれによっても認識されなかった)ことを意味します。通常、JDBC 4.0ドライバーは、ランタイムクラスパスにドロップするだけで自動ロードされます。どちらか一方を除外するには、次のようにいつでも手動でロードできます。

      System.out.println("Loading driver...");
      
      try {
          Class.forName("com.mysql.jdbc.Driver");
          System.out.println("Driver loaded!");
      } catch (ClassNotFoundException e) {
          throw new IllegalStateException("Cannot find the driver in the classpath!", e);
      }
      

      newInstance()に注意してください 通話はない ここで必要です。古くてバグのあるorg.gjt.mm.mysql.Driverを修正するだけです 。 説明ここ 。この行がClassNotFoundExceptionをスローした場合 の場合、JDBCドライバークラスを含むJARファイルは単にクラスパスに配置されません。

      毎回ドライバをロードする必要はないことに注意してください 接続しています。アプリケーションの起動時に1回だけで十分です。

      SQLException:Connection refusedが発生した場合 または接続がタイムアウトしました またはMySQL固有のCommunicationsException:Communications link failure 、それはDBにまったく到達できないことを意味します。これには、次の1つ以上の原因が考えられます。

      1. JDBCURLのIPアドレスまたはホスト名が間違っています。
      2. JDBCURLのホスト名はローカルDNSサーバーによって認識されません。
      3. JDBCURLにポート番号がないか間違っています。
      4. DBサーバーがダウンしています。
      5. DBサーバーはTCP/IP接続を受け入れません。
      6. DBサーバーの接続が不足しています。
      7. JavaとDBの間にある何かが、接続をブロックしています。ファイアウォールまたはプロキシ。

      どちらか一方を解決するには、次のアドバイスに従ってください。

      1. pingで確認してテストします 。
      2. DNSを更新するか、代わりにJDBCURLでIPアドレスを使用してください。
      3. my.cnfに基づいて確認してください MySQLDBの。
      4. DBを起動します。
      5. mysqldが-skip-networkingオプションなしで開始されているかどうかを確認します 。
      6. DBを再起動し、それに応じてコードを修正して、最終的にで接続を閉じます。 。
      7. ファイアウォールを無効にするか、ファイアウォール/プロキシを構成してポートを許可/転送します。

      接続を閉じることに注意してください 非常に 重要。接続を閉じずに短時間で多くの接続を取得し続けると、データベースの接続が不足し、アプリケーションが破損する可能性があります。常にConnectionを取得します try-with-resources ステートメント 。または、まだJava 7を使用していない場合は、最後にで明示的に閉じます。 try-finally ブロック。 最後にで締めくくります 例外が発生した場合にも確実に閉じられるようにするためです。これはステートメントにも当てはまります 、 PreparedStatement およびResultSet

    接続性に関する限り、それでした。 ここ を見つけることができます 基本的なDAOクラスを使用して、十分な価値のあるJavaモデルオブジェクトをデータベースにロードして保存する方法のより高度なチュートリアル。

    DB接続にシングルトンパターンを使用することは悪いアプローチです。他の質問の中でも参照してください: http://stackoverflow.com/q/9428573/ 。これは最初の一番の間違いです。



    1. フラグメントでAndroidSqliteデータベースを開く

    2. SQLiteのファイルからSQLスクリプトを実行する5つの方法

    3. ビューで使用されているエイリアスの実際の列名を見つけますか?

    4. データベースは保護されていますか?もう一度考えて