MySQLとJDBCをインストールする方法とその使用方法を段階的に説明します。
-
ダウンロード MySQLサーバーをインストールします 。通常の方法で行ってください。ポート番号を変更するときはいつでも覚えておいてください。デフォルトでは
3306。 -
ダウンロード JDBCドライバーとクラスパスに入れます 、ZIPファイルを抽出し、含まれているJARファイルをクラスパスに配置します。ベンダー固有のJDBCドライバーは、 JDBC API (ここのチュートリアル )。
EclipseやNetbeansなどのIDEを使用している場合は、JARファイルをライブラリとして追加することで、それをクラスパスに追加できます。 ビルドパスへ プロジェクトのプロパティで。
コマンドコンソールで「プレーンバニラ」を実行している場合は、
-cpでJARファイルへのパスを指定する必要があります。 または-classpathJavaアプリケーションを実行するときの引数。java -cp .;/path/to/mysql-connector.jar com.example.YourClass
。コード> 現在を追加するだけですcom.example.YourClassを見つけることができるように、クラスパスへのディレクトリも および;Windowsの場合と同様に、クラスパスセパレータです。 Unixおよびクローンの場合:使用する必要があります。 -
データベース を作成します MySQLで 。データベースを作成しましょう
javabase。もちろん、World Dominationが必要なので、UTF-8も使用しましょう。CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; -
ユーザーを作成する Javaおよび
付与 の場合 アクセス 。rootを使用しているという理由だけで 悪い習慣です。CREATE USER 'java'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON javabase.* TO 'java'@'localhost' IDENTIFIED BY 'password';はい、
javaはユーザー名とパスワードです ここでのパスワードです。 -
決定> 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
-
-
接続をテストする> 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つ以上の原因が考えられます。- JDBCURLのIPアドレスまたはホスト名が間違っています。
- JDBCURLのホスト名はローカルDNSサーバーによって認識されません。
- JDBCURLにポート番号がないか間違っています。
- DBサーバーがダウンしています。
- DBサーバーはTCP/IP接続を受け入れません。
- DBサーバーの接続が不足しています。
- JavaとDBの間にある何かが、接続をブロックしています。ファイアウォールまたはプロキシ。
どちらか一方を解決するには、次のアドバイスに従ってください。
-
pingで確認してテストします 。 - DNSを更新するか、代わりにJDBCURLでIPアドレスを使用してください。
-
my.cnfに基づいて確認してください MySQLDBの。 - DBを起動します。
- mysqldが
-skip-networkingオプションなしで開始されているかどうかを確認します 。 - DBを再起動し、それに応じてコードを修正して、
最終的にで接続を閉じます。 。 - ファイアウォールを無効にするか、ファイアウォール/プロキシを構成してポートを許可/転送します。
接続を閉じることに注意してください 非常に 重要。接続を閉じずに短時間で多くの接続を取得し続けると、データベースの接続が不足し、アプリケーションが破損する可能性があります。常にConnectionを取得しますtry-with-resourcesステートメント 。または、まだJava 7を使用していない場合は、最後にで明示的に閉じます。try-finallyブロック。最後にで締めくくります 例外が発生した場合にも確実に閉じられるようにするためです。これはステートメントにも当てはまります 、PreparedStatementおよびResultSet。
接続性に関する限り、それでした。 ここ を見つけることができます 基本的なDAOクラスを使用して、十分な価値のあるJavaモデルオブジェクトをデータベースにロードして保存する方法のより高度なチュートリアル。
DB接続にシングルトンパターンを使用することは悪いアプローチです。他の質問の中でも参照してください: https://stackoverflow.com/q/9428573/ 。これは最初の一番の間違いです。