MySQLとJDBCをインストールする方法とその使用方法を段階的に説明します。
-
ダウンロード MySQLサーバーをインストールします 。通常の方法で行ってください。ポート番号を変更するときはいつでも覚えておいてください。デフォルトでは
3306
。 -
ダウンロード 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およびクローンの場合:
使用する必要があります。 -
データベース を作成します 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接続にシングルトンパターンを使用することは悪いアプローチです。他の質問の中でも参照してください: http://stackoverflow.com/q/9428573/ 。これは最初の一番の間違いです。