データベースへ接続するプログラム
一言まとめ
スムーズにデータベース接続を行う手順まとめです。
【説明】
コードを見てDB接続の流れを見ていきます。
大まかな流れは以下です。
- Class.forName() でDB接続の準備
- 接続処理
- 切断処理
DB接続の準備
SQLのパッケージをインポートする
以下はjava.sqlパッケージ内のクラスです。
- Connectionインタフェース
- DriverManagerクラス
// SQLのパッケージをインポート
import java.sql.Connection;
import java.sql.DriverManager;
DBに接続するための値をフィールドで定数化
これらは後々でDB接続に使う値になります。以下の理由から定数に設定しておくと使いやすい。
- 基本的に滅多に変わることがない値のため、
- 何度も同じ記述する手間がなくなる
- コーディングのケアレスミスをなくす。
// ドライバーのクラス名
private static final String POSTGRES_DRIVER = "org.postgresql.Driver";
// JDMC接続先情報
private static final String JDBC_CONNECTION = "jdbc:postgresql://localhost:5432/lesson_db";
// ユーザー名
private static final String USER = "ユーザー名";
// パスワード
private static final String PASS = "パスワード";
後に接続先の情報を入れるので、最初は null を与えておく。
Connection connection = null;
Class.forName()
JDBCドライバをロードします。データベースに接続する準備の記述。
Class.forName()メソッドにJDBCドライバ名を与えます。
// データベースに接続する準備。
// Class.forName()メソッドにJDBCドライバ名を与えJDBCドライバをロード
Class.forName(POSTGRES_DRIVER);
接続処理
DriverManager
DriverManagerクラスのgetConnection()メソッドを使用してデータベースへの接続を行います。
接続したいデータベースを指定するには、getConnection() メソッドに以下を入力します。
jdbc:postgresql://【ホスト名】/【データベース名】 【ユーザ名】 【パスワード】
ここで先程設定した定数を以下のように引数として与えることで、データベースを指定できます。
// 接続先の情報。引数:「JDMC接続先情報」,「ユーザー名」,「パスワード」
connection = DriverManager.getConnection(JDBC_CONNECTION, USER, PASS);
例外処理と接続の切断
try {
// 接続処理...
// forName()で例外発生
} catch (ClassNotFoundException e) {
e.printStackTrace();
// getConnection()で例外発生
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (connection != null) {
// データベースを切断
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
connection.close()
SQL文がデータベース上に滞留し処理が進まなくなり、エラーが起きたりたりするため、DBに接続したら、必ず 切断 するための記述をします。
データベースから切断するためにclose()メソッドを実行します。
確実に切断を行うには、finally句に記述し、
「Connectionが接続されているか(nullでないか)の判定」を行うよう記述。
【まとめ】
これら一連の流れを書いたコードが以下になります。
package about_create_JDBC;
// SQLのパッケージをインポート
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class AccessDB {
// ドライバーのクラス名
private static final String POSTGRES_DRIVER = "org.postgresql.Driver";
// JDMC接続先情報 localhost:5432 は人によって値が違うことがあります。
private static final String JDBC_CONNECTION = "jdbc:postgresql://localhost:5432/pokedex";
// ユーザー名
private static final String USER = "postgres";
// パスワード
private static final String PASS = "postgres";
public static void main(String[] args) {
Connection connection = null;
try {
// データベースに接続する準備。
// Class.forName()メソッドにJDBCドライバ名を与えJDBCドライバをロード
Class.forName(POSTGRES_DRIVER);
// 接続先の情報。引数:「JDMC接続先情報」,「ユーザー名」,「パスワード」
connection = DriverManager.getConnection(JDBC_CONNECTION, USER, PASS);
// forName()で例外発生
} catch (ClassNotFoundException e) {
e.printStackTrace();
// getConnection()で例外発生
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (connection != null) {
// データベースを切断
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}