JDBC¶
JavaのRDBMSアクセス用API。SQLベースの問い合わせに対応したAPIです。
データベースへの接続¶
データベースドライバー¶
データベースへの接続では、データベース毎に提供されるJDBCドライバーを使用します。JDBCドライバーのJARを入手し、クラスパスで認識できる場所に置いてプログラムを実行すると、JDBCドライバーのJARファイルのマニフェストに記載されたクラスを使用することができるようになります1。
アプリケーションプログラムとしては、DriverManagerのgetConnectionを呼び出すだけでOKです。コネクションを取得するサンプルコードを次に示します。try-with-resource構文を使うとconnectionの解放が保証される(しかも明示的にcloseを呼ばなくてもよい)ので活用します。
try (Connection con = DriverManager.getConnection(url)) {
// ...
} catch (SQLException ex) {
// ...
}
1 Java SE 6以降からの仕様です。ServiceLoaderを使って実現しています。なお、Java SE 5以前の場合、Class.forName(JDBCドライバークラス名)でアプリケーションから明示的に指定します。Java SE 9以降でモジュール仕様JARの場合は、module-info.class のprovides宣言で指定したクラスが使われます。
リソースの管理¶
JDBC APIでは、Connection、PreparedStatement(もしくはStatement)、ResultSetを使用した後に明示的にclose()を呼び出しでリソースを解放する必要があります。
try-with-resouce構文で、解放忘れを防ぐプログラミングをするのが推奨です。
PreparedStatementをclose()すると、ResultSetのclose()が連鎖的に呼ばれるので、ResultSetのcloseはサボっても大丈夫かと。
PreparedStatement 安全性の高いクエリ構築¶