LoginSignup
2
1

More than 1 year has passed since last update.

【Java】EclipseでOracle Databaseに接続する方法

Posted at

はじめに

今回は、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

この記事の内容

  1. 前提
  2. チートシート
  3. JDBCドライバの追加(準備)
  4. データベースへ接続と切断(DBManager)
  5. SQLの操作(DBへ問い合わせ)

1. 前提

  • データベースにテーブルが用意されている
  • OracleのJDBCドライバがダウンロード済みである
    image.png

2. チートシート

大まかな流れと処理を記載した、手順書です。
JDBC.png

3. JDBCドライバの追加(準備)

Eplicseを開き、プロジェクトを新規作成します。
例:プロジェクト名 jdbc_training
image.png

上記で作成したプロジェクトの中に、libフォルダ を作成します。
(scrと同じ階層)
image.png

libフォルダに、ダウンロード済みのJDBCドライバを格納します。
image.png

JDBCドライバをビルド・パスに追加します。
image.png

libフォルダと同じ階層に、参照ライブラリーが自動で生成されたら成功です。

4. データベースへ接続と切断(DBManager)

パッケージとクラスを作成します。
例:パッケージ名 jp.co.jdbc 
  ドライバクラス名 DBManager
  実行用クラス名 JdbcTraining01
image.png

DBManager.java に以下プログラムを記述します。

補足
①定数宣言
正確には定数ではありません。参照型変数の参照の差し替えを禁止しています。

②ドライバクラス名
JDBCドライバ毎に異なります。
ojdbc7.jarの場合・・・oracle.jdbc.driver.OracleDriver

③Class#forName()メソッド
引数に指定されたクラスが存在しなかった場合、例外クラスを送出します。
例外クラス・・・ClassNotFoundException

④DriverManager#getConnection()メソッド
DBへの接続が失敗した場合、、例外クラスを送出します。
例外クラス・・・SQLException

DBManager.java
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 に、以下プログラムを記述します。

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型

②接続を切断
オブジェクトを生成したとの逆の順番で切断します。

JdbcTraining02.java
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メソッドを追記する。

DBManager.java
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();
			}
		}
	}
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1