はじめに
今回は、JDBCを利用し、EclipseでOracle Databaseに接続する方法についてまとます。
大まかな手順と処理について記載しており、技術の詳細には触れていません。
※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。
この記事の目的
以下内容のアウトプット
- JDBCドライバの追加
- データベースへ接続と切断
- SQLの操作
開発環境
- Java 16.0.2
- JDK javac 10.0.1
- JDBC Oracle 12.1.0.1.0 JDBC 4.1 compiled with JDK7
- Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
- Eclipse
この記事の内容
- 前提
- チートシート
- JDBCドライバの追加(準備)
- データベースへ接続と切断(DBManager)
- SQLの操作(DBへ問い合わせ)
1. 前提
2. チートシート
3. JDBCドライバの追加(準備)
Eplicseを開き、プロジェクトを新規作成します。
例:プロジェクト名 jdbc_training
上記で作成したプロジェクトの中に、libフォルダ
を作成します。
(scrと同じ階層)
libフォルダに、ダウンロード済みのJDBCドライバを格納します。
libフォルダと同じ階層に、参照ライブラリーが自動で生成されたら成功です。
4. データベースへ接続と切断(DBManager)
パッケージとクラスを作成します。
例:パッケージ名 jp.co.jdbc
ドライバクラス名 DBManager
実行用クラス名 JdbcTraining01
DBManager.java
に以下プログラムを記述します。
補足
①定数宣言
正確には定数ではありません。参照型変数の参照の差し替えを禁止しています。
②ドライバクラス名
JDBCドライバ毎に異なります。
ojdbc7.jarの場合・・・oracle.jdbc.driver.OracleDriver
③Class#forName()メソッド
引数に指定されたクラスが存在しなかった場合、例外クラスを送出します。
例外クラス・・・ClassNotFoundException
④DriverManager#getConnection()メソッド
DBへの接続が失敗した場合、、例外クラスを送出します。
例外クラス・・・SQLException
package jp.co.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBManager {
// 定数宣言_1⃣
private static final String DRIVER = "xxxx"; // ドライバクラス名_2⃣
private static final String URL = "jdbc:oracle:thin:@localhost:1521:XE"; // 接続するDBのURL
private static final String USER_NAME = "xxxx"; // DB接続するためのユーザー名
private static final String PASSWORD = "xxxx"; // DB接続するためのパスワード
// 接続メソッドを定義
public static Connection getConnection() throws ClassNotFoundException, SQLException{
// JVMにJDBCドライバクラスを登録_3⃣
Class.forName(DRIVER);
// DBに接続_4⃣
Connection conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
System.out.println("DBへ接続成功!");
// 接続情報を返す
return conn;
}
// 切断メソッドの定義
public static void close(Connection connection) {
// 接続情報が入っていたら、切断処理を実行
if(connection != null) {
try {
connection.close();
System.out.println("DBへの接続を切断");
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
実行用クラスの JdbcTraining01.java
に、以下プログラムを記述します。
package jp.co.jdbc;
import java.sql.Connection;
public class JdbcTraining01 {
public static void main(String[] args) {
// connectionオブジェクトを生成
Connection connection = null;
try {
// DB接続が成功したら、接続情報が返ってくる
connection = DBManager.getConnection();
}catch(Exception e) {
e.printStackTrace();
}finally {
// DB接続を切断するメソッドに、接続情報を渡す
DBManager.close(connection);
}
}
}
実行し、コンソールに以下が表示されたら成功です。
DBへ接続成功!
DBへの接続を切断
5. SQLの操作(DBへ問い合わせ)
新しく実行用クラスを作成します。
例:クラス名 JdbcTraining02
補足
①SQLの実行、実行結果の受け取り
検索系SQL(SELECT文)・・・実行 executeQuery()メソッド
受け取り ResultSet型
更新系SQL(INSERT, UPDATE, SELETE文)・・・実行 executeUpdate()メソッド
受け取り int型
②接続を切断
オブジェクトを生成したとの逆の順番で切断します。
package jp.co.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class JdbcTraining02 {
public static void main(String[] args) {
select();
}
public static void select() {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// DBへ接続
connection = DBManager.getConnection();
// SQLを定義
String sql = "SQL文を記述";
// ステートメントを作成
preparedStatement = connection.prepareStatement(sql);
// プレースホルダに値をバインド
preparedStatement.setString(1, xxxx);
// SQLを実行し、実行結果を受け取る_1⃣
resultSet = preparedStatement.executeQuery();
}catch(Exception e) {
e.printStackTrace();
}finally {
// 接続を切断_2⃣
DBManager.close(resultSet);
DBManager.close(preparedStatement); // DBManager.javaに追加でメソッドを定義
DBManager.close(connection); // DBManager.javaに追記でメソッドを定義
}
}
}
DBManager.java の 切断メソッドを定義
の場所に、closeメソッドを追記する。
public static void close(PreparedStatement preparedStatement) {
if(preparedStatement != null) {
try {
preparedStatement.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet resultSet) {
if(resultSet != null) {
try {
resultSet.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}