|
||||||||||||||||||||||
|
MySQL JDBC を使ってみようJDBC を利用した MySQL への接続MySQL への接続を確立するには、 java.sql.DriverManager の getConnection メソッドを呼びます。 getConnection にはデータベースへの URL (データベース名、ユーザー名、パスワードを含んだ接続文字列) を渡すことによって、 これが MySQL への JDBC 接続であることを認識します。 conn = DriverManager.getConnection( "jdbc:mysql://localhost/db1?user=usr1&password=urpwd"); getConnection メソッドは何らかの理由でデータベースへ接続できない場合等に、 SQLException を投げます。これをキャッチしてしかるべき処置をとる必要があります。(例えば、ユーザーに正常な処理が行えなかったことを表示するなど) また、接続語は確実に接続を閉じるために try - finally を利用して、close メソッドを呼び出します。 以上を踏まえると、java.sql.Connection を利用するときは以下のようなコードになります。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MySQLTest1 { public static void main(String[] args) { Connection conn; try { conn = DriverManager.getConnection( "jdbc:mysql://localhost/db1?user=usr1&password=urpwd"); try { // ここでクエリを実行 } finally { // 直前の try ブロックに入ったら、ここは必ず実行される conn.close(); } } catch (SQLException ex) { // 接続できない時 } } } クエリの実行データベースに接続したら、好きなクエリを実行できます。 ここでは、次のスクリーンショットのように、rates というテーブルからデータを取得します。
ちなみに、このスクリーンショットは MySQL の管理ツールである MySQL Administrator の画面です。 MySQL を利用するときはこのツールを利用すると、何かと便利です。 さて、JDBC を用いて、上記スクリーンショットと同様に3件のデータが取得できるか試してみましょう。 クエリを実行するときは、Connection の createStatement メソッドを用いてステートメント (Statement) オブジェクトを作成します。 そして、そのステートメントオブジェクトの executeQuery メソッドを用いてクエリを実行します。 結果は ResultSet オブジェクトとして取得できます。 これらをまとめると、以下のコードになります。 Statement stat; ResultSet rs; stat = conn.createStatement(); rs = stat.executeQuery( "SELECT * FROM rates WHERE code='JPY' AND 138 < rate" ); while( rs.next() ) { System.out.format( "%s %.2f\n", rs.getDate(2), // 1 based index rs.getDouble(3) ); } 必要に応じて、次のように import してください。 import java.sql.ResultSet; import java.sql.Statement; 尚、ResultSet の getXXX (XXX は型の名前) メソッドで結果を取得しますが、上記の例のようにカラムのインデックスを用いる場合には、 インデックスは1始まりです。 インデックスではなく、次のようにカラム名を指定することも可能です。 while( rs.next() ) { System.out.format( "%s %.2f\n", rs.getDate( "date" ), rs.getDouble( "rate" ) ); } 実行例以上をまとめると、簡単なクエリを行うプログラムは次のように書くことができます。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MySQLTest1 { public static void main(String[] args) { Connection conn; Statement stat; ResultSet rs; try { conn = DriverManager.getConnection( "jdbc:mysql://localhost/db1?user=usr1&password=urpwd"); try { stat = conn.createStatement(); rs = stat.executeQuery( "SELECT * FROM rates WHERE code='JPY' AND 138 < rate" ); while( rs.next() ) { System.out.format( "%s %.2f\n", rs.getDate(2), // 1 based index rs.getDouble(3) ); } } finally { conn.close(); } } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } } } 実行例は次のとおりです。 > java MySQLTest1 2009-06-10 138.03 2009-08-10 138.01 2009-10-26 138.09 ドライバーが CLASSPATH に正しく設定されていない場合などは、コンパイル時あるいは実行時に失敗しますので、 そのときは MySQL のドライバーの設定 を確認してください。 |
|
© 2010 Java 入門 |
|||||||||||||||||||