Revised: 9th/Sep./2002
前節で MySQL をダウンロード/インストールしました。次は、 JDBC ドライバをインストールします。 MySQL の JDBC ドライバは複数公開されていますが、ここでは公式ドライバである MySQL Connector/J を使います。2002年6月現在の最新バージョンは 2.0.14です。Beta版として、MySQL Connector/J 3.0.0が公開されています。これらはもともと、MM.MySQLと呼ばれるドライバとして開発されていたものが、2002年8月に公式ドライバとなったものです。MM.MySQLの最終バージョン2.0.14と、MySQL Cojnnector/J 2.0.14は同じものです。ドライバ・クラスの完全限定名が変更されたので、その点だけ注意してください。
オープンソースソフトウェアライセンスは MySQL に順じ、 GPL (Gnu Lesser General Public Lisence) です。
MySQL Connector/J のサイトから、stableリリースのバージョンを開きます。
この中で、複数の圧縮形式が公開されているので、利用できる圧縮形式をクリックします。利用可能なダウンロードサイトがリストされるので、地理的に最も近いサイトを選択します。一般に、FTPの方がHTTPよりも高速にダウンロードできます。
ダウンロードすると、2.0.14の場合は、mysql-connector-java-2.0.14.zip が生成されます。これを解凍するとmysql-connector-java-2.0.14が生成されます。次のコマンドは、Cドライブ直下にZIPファイルを配置した場合の解凍例です。JARコマンドはJ2SDKとともにインストールされている圧縮解凍ツールで、主たる目的はJARファイルの解凍圧縮です。JARは圧縮スキーマにZIPを使っているので、jarコマンドでZIPファイルが解凍できます。
C:\>jar -xvf mm.mysql-2.0.14-you-must-unjar-me.jar
jar コマンドの x フラグは解凍を意味し、f フラグはオペランドに対象ファイルを指定します。ここでは、カレント・ディレクトリ内の mm.mysql-2.0.14-you-must-unjar-me.jar を解凍するように指定しました。 jar コマンドの使い方は tar コマンドと同じです。
![]() |
| 図:MySQL Connector/J を解凍して作成されるディレクトリ |
もう一つのディレクトリ、META-INF はりリース情報なので実際は使いません。C:\mysql-connector-java-2.0.14 の中にドライバ他のファイルが格納されています。
CLASPATH に次のパスをセットします。これは、解凍先をCドライブ直下にした場合の絶対パスです。他のディレクトリに配置するときは、適宜変更してください。
C:\mysql-connector-java-2.0.14\mysql-connector-java-2.0.14-bin.jar上のクラスパスをOSの環境変数 CLASSPATH にセットします。 Windows9x 系では C ドライブ(ブートドライブ)のトップにある AUTOEXEC.BAT の最終行に追加します。 Windows NT系 (NT/2000/XP) の場合は「コントロールパネル」から「システムのプロパティ」を開いて「詳細」、「環境変数」にセットします。
CLASSPATHが通れば、MySQL Connector/Jドライバ・クラスを完全限定名com.mysql.jdbc.Driverで参照できます。ClassNotFoundExceptionが発生するようなら、CLASSPATHの設定が間違っています。尚、このパッケージはインポートしないで、クラスの参照はここで挙げたように完全限定名を使うようにしてください。DBMSの切り替え時にはJDBCドライバの切り替えが必要になるので、ソースコードにimport文で特定のDBMSのJDBCドライバ・パッケージを記述してしまうのは望ましくありません。
尚、2002年8月現在、MySQL Connector/JにはJDBC 3.0を実装したMySQL Connector/J 3がベータ版として公開されています。JDBC 3.0はjava.sqlとjavax.sqlの二つのパッケージからなり、トランザクション周りなどのユーティリティが追加されています。しかし、本稿で紹介する範囲の、DBMSへのコネクションの確立、SQL文による問い合わせなどの基本機能はJDBC 2.0から変更はありません。
MySQL を起動して、 JDBC API からアクセスしてみましょう。前節で test データベースに sample テーブルを作りました。この内容を出力してみましょう。
ここで、 MySQL のユーザ名とパスワードを root/passwd にセットしてあります。適宜御自分の設定に合わせて書き換えてください。
コマンド ラインからユーザ名とパスワードを変更するには、次のようにします。
C:\>cd mysql\bin
C:\mysql\bin>mysql -u root mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 3.23.49-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> UPDATE user SET Password=PASSWORD('passwd')
-> where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 2 Changed: 1 Warnings: 0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> \q
Bye
次のサンプルは、 test データベースの表 sample から、 name という列を取り出して出力するものです。
コメントの手順を確認してください。特に、ここでは MySQLのドライバConnector/Jを使っていますが、完全限定名は"com.mysql.jdbc.Driver"です。これはimportせずに、完全限定名のまま使ってください。importするとjavacが混乱してコンパイルできない仕様になっています。
JdbcSample.java:
import java.sql.*;
class JdbcSample {
public static void main(String[] args) {
try {
// 1.JDBC Driver の登録
Class.forName("com.mysql.jdbc.Driver").newInstance();
// 2.データベースへの接続
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/test", "root", "passwd");
// 3.SQL ステートメント・オブジェクトの作成
Statement stmt = con.createStatement();
// 4.SQL ステートメントの発行
ResultSet rs = stmt.executeQuery("SELECT * from sample");
// 5.結果の出力
while (rs.next()) {
System.out.println(rs.getString("name"));
}
// 6.データベースのクローズ
rs.close();
stmt.close();
con.close();
} catch (SQLException e1) {
System.out.println(
"SQLException: " + e1.getMessage());
System.out.println(
" SQLState: " + e1.getSQLState());
System.out.println(
" VendorError: " + e1.getErrorCode());
} catch (Exception e2) {
System.out.println(
"Exception: " + e2.getMessage());
}
}
}
MySQL が起動しているのを確認して、このサンプルを実行してみましょう。次の実行例は、上記ファイル JdbcSample.java を、 C:\Java\JDBC に保存した場合の実行例です。
C:\Java\JDBC>javac JdbcSample.java C:\Java\JDBC>java JdbcSample 菅井 鈴木 佐藤 C:\Java\JDBC>