\r\n\r\n

java を使って mysql データベースに接続する方法

java は javasdk の一部として jdbc を提供しています。今回は、mysqlデータベースに接続し、それを使ってクエリを実行する方法について詳しく見ていきましょう...

Javaは、JavaSDK(ソフトウェア開発キット)の一部として、JDBC(Java Database Connectivity)を提供しています。このAPIを使うことで、リレーショナルデータベースに接続し、レコードの照会、**、更新、削除などの一般的な操作を簡単に行うことができる。

mysql-connect-java

コアとなるjdbcapiはjavaに含まれていますが、MySQLやsqlserverなどの特定のデータベースに接続するためには、データベースドライバと呼ばれる追加のコンポーネントが必要です。このデータベースドライバーは、コアとなるJDBCコールをそのデータベースが理解できる形式に変換するソフトウェアコンポーネントである。

今回は、MySQLのデータベースに接続し、それを使っていくつかのクエリを実行する方法について詳しく見ていきましょう。

mysql データベースドライバ

上記のように、MySQLデータベースに接続できるようにするためには、MySQL用のJDBCドライバが必要です。これは Connector/J ドライバと呼ばれ、MySQL サイトからダウンロードすることができます。

ZIP(またはtar.GZ)ファイルをダウンロードし、アーカイブファイルを解凍して、JARファイルmysql connector java--bin.jarファイルを適当な場所にコピーしてください。このファイルは、MySQL JDBC ドライバを使用するすべてのコードを実行するために必要です。

サンプルデータベースの作成

MySQLデータベースをダウンロードし、アクセスできるように正しく設定できたと仮定して、接続とクエリの実行に使用できるように、サンプルデータベースを作成してみましょう。

選択したクライアントを使用してデータベースに接続し、次のステートメントを実行して、サンプルデータベースを作成します。

create database sample;

また、データベースに接続できるように、ユーザー名とパスワードも必要です(管理者として接続したい場合は別ですが、通常は悪い考えです)。

以下は、MySQLを実行している同じコンピュータ(localhostで示される)から、securepwdパスワードを使用してMySQLデータベースに接続するtestuserというユーザーを作成するものである。

create user 'testuser'@'localhost' identified by 'securepwd';

他のコンピューター(remotemcという名前)で動いているデータベースに接続するには、次のコマンドを使います(remotemcはホスト名でもipアドレスでもかまいません)。

create user 'testuser'@'remotemc' identified by 'securepwd';

ユーザー名とパスワードが作成されたので、先ほど作成したサンプルデータベースへのアクセス権を付与する必要があります。

grant all on sample.* to 'testuser'@'localhost';

または、データベースがリモートの場合。

grant all on sample.* to 'testuser'@'remotemc';

これで、先ほど作成したユーザーと同じパスワードでデータベースに接続できることが確認できたはずです。また、接続後に以下のコマンドを実行することで、すべてのパーミッションが正しいことを確認できます。

create table joe(id int primary key auto_increment, name varchar(25));
ドロップテーブル・ジョー

javaクラスのパスを設定する

では、JavaからMySQLに接続する方法を詳しく見ていきましょう。まず、データベースドライバをロードすることから始めます。これは、適切な場所で次のコマンドを呼び出すことによって行われます。

Class.forName("com.mysql.jdbc.Driver");

コードは例外を投げるかもしれないので、それを処理するつもりなら(例えばGUIエラーメッセージをフォーマットする)、それをキャッチすることができます。

try {
Class.forName("com.mysql.jdbc.Driver")。
} catch(ClassNotFoundExceptionのex){。
// ここで例外を使用する
}

このコードはクラス内のスタティックブロック内で呼び出すのが一般的で、ドライバを読み込めなかった場合は即座にプログラムが失敗します。

public class Sample
{
スタティック {
トライ
Class.forName("com.mysql.jdbc.Driver")。
} catch(ClassNotFoundExceptionのex){。
System.err.println("Unable to load MySQL Driver");
}
}
}

もちろん、ドライバを見つけられるようにするためには、以下のように、クラスパスに含まれるドライバJAR(上記でダウンロード・展開したもの)を使って、プログラムを呼び出す必要があります。

java -cp mysql-connector-java-<version>-bin.jar:... <class to run>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

javaからmysqlに接続する

javaからMySQLドライバをロードする詳細がわかったので、データベースへの接続を開始しましょう。データベース接続を作成する方法として、DriverManagerを使用する方法があります。

String jdbcUrl = ...;
接続 con = DriverManager.getConnection(jdbcUrl);

jdbcUrlとは? データベースのあるサーバー、ユーザー名など、接続の詳細を表すものです。以下は、例のURLの例です。

String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=secrepwd";

ホスト名(localhost)、ユーザー名、パスワードなど、接続に必要なすべてのパラメータを含んでいることに注意してください。(このようなパスワードを含めることは良いことではありません。代替案については以下を参照してください)。

このjdbcUrlを使用して、接続を確認する完全なプログラムを以下に示します。

public class Sample
{
スタティック {
トライ
Class.forName("com.mysql.jdbc.Driver")。
} catch(ClassNotFoundExceptionのex){。
System.err.println("Unable to load MySQL Driver");
}
}
static public void main(String[] args) throws Exception
{
String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=securepwd";
接続 con = DriverManager.getConnection(jdbcUrl);
System.out.println("Connected!");
con.close()を実行します。
}
}

データベース接続は、プログラムの貴重な資源であり、上記のように正しく閉じる必要があることに注意してください。ただし、上記のコードでは、例外が発生しても接続を閉じません。正常終了時、異常終了時に接続を閉じるには、以下のパターンを使用します。

try(Connection con = DriverManager.getConnection(jdbcUrl)) {
System.out.println("Connected!");
}

前述のように、パスワードをJDBCのURLに埋め込むのは良くない。ユーザー名とパスワードを直接指定するには、以下の接続オプションを使用することができる。

String jdbcUrl = "jdbc:mysql://localhost/sample";
try(Connection con = DriverManager.getConnection(jdbcUrl, "testuser", "securepwd")) { 試行錯誤。
}

javaからのデータベースクエリ

データベースへの接続が確立されたので、データベースのバージョンなどのクエリを実行する方法を確認しましょう。

select version();

以下のようにjavaでクエリを実行します。結果セットを返す executeQuery() メソッドを使用して、ステートメントオブジェクトを作成し、クエリを実行します。

String queryString = "select version()";
ステートメントstmt = con.createStatement().
ResultSet rset = stmt.executeQuery(queryString).ResultSet rset = stmt.executeQuery(queryString);

以下のように結果セットのバージョンを表示する。 1 は、1 から始まる結果内の列のインデックスを示す。

while ( rset.next()) {
System.out.println("バージョン:" + rset.getString(1));
}

結果を処理した後、オブジェクトを閉じる必要があります。

rset.close();
stmt.close()を実行します。

javaからMySQLへの接続と簡単なクエリの実行までカバーしています。

また、SQLコマンドメモリストもご覧ください。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ