Java Oracleでinsert/update/deleteするサンプル

JavaでOracleにJDBC接続してinsert/update/deleteするサンプルです。

確認環境
・Java 8
・Oracle Express Edition 11g Release 2
・Windows 10
・Eclipse 4.8

目次

SQLのサンプル insertのサンプル
説明 接続情報
  プレースホルダ
  接続とtry-with-resources構文
  コミットモードの設定
  パラメータ(値)のセット
  SQLの実行とコミットとロールバック
  updateの場合
  deleteの場合
ドライバ Oracleのドライバを取得する

insertのサンプル

OracleにJDBC接続してインサートを実行するサンプルです。

package test1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class Test1 {
	public static void main(String[] args) {
		final String URL = "jdbc:oracle:thin:@localhost:1521:XE";
		final String USER = "hr";
		final String PASS = "hr";
		final String SQL =
			"insert into syain (id,name,romaji) VALUES (?,?,?)";
		
        try(Connection conn = 
                DriverManager.getConnection(URL, USER, PASS)){

            conn.setAutoCommit(false);
            
            try(PreparedStatement ps = conn.prepareStatement(SQL)){
                ps.setInt(1, 1);
                ps.setString(2,"竹田");
                ps.setString(3,"takeda");
                
                ps.executeUpdate();
                conn.commit();
            } catch (Exception e) {
                conn.rollback();
                System.out.println("rollback");
                throw e;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("処理が完了しました");
        }
	}
}

接続情報

		final String URL = "jdbc:oracle:thin:@localhost:1521:XE";
		final String USER = "hr";
		final String PASS = "hr";

8~10行目は、オラクルへ接続する情報です。1521はポート番号でデフォルトの値です。XEはデータベース名です。
finalは再代入不可になります。
Java final修飾子のサンプル

プレースホルダ

		final String SQL =
			"insert into syain (id,name,romaji) VALUES (?,?,?)";

12行目は、SQLのinsert文です。クエスチョンマーク(?)は、プレースホルダです。パラメータで値を設定します。
入力される不正な文字を抑止できるのでSQLインジェクション対策になります。
固定文字列のSQLの部分がプリコンパイルされるので実行速度が上がります。
place=場所、holder=入れものです。
プレースホルダは、バインド変数とも呼ばれます。

接続とtry-with-resources構文

        try(Connection conn = 
                DriverManager.getConnection(URL, USER, PASS)){

14行目のtryの後に続くかっこ()はリソースを自動でクローズします。try-with-resources構文と呼ばれます。Java7で導入されました。
Java リソースを自動でクローズ(try-with-resources文)
15行目は、DriverManagerクラスのgetConnectionメソッドで接続しています。変数の型はConnectionインターフェースです。

以下はOracleのJava8のConnectionインターフェースのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/sql/Connection.html

コミットモードの設定

conn.setAutoCommit(false);

17行目は、setAutoCommitメソッドで引数はfalseです。手動コミットするようにしています。デフォルトは自動コミットモードです。自動コミットモードは、SQLを実行する毎にコミットされます。

パラメータ(値)のセット

            try(PreparedStatement ps = conn.prepareStatement(SQL)){
                ps.setInt(1, 1);
                ps.setString(2,"竹田");
                ps.setString(3,"takeda");

19行目は、prepareStatementのインスタンスを生成しています。プリコンパイルされたSQL文を扱うオブジェクトです。引数に上記のSQLを指定しています。
Prepared=準備された、Statement=文です。
以下はOracleのJava8のPreparedStatementインターフェースのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/sql/PreparedStatement.html

20~22行目は、プレースホルダに値をセットしています。1つめの引数はプレースホルダの位置です。2つめの引数は値です。

SQLの実行とコミットとロールバック

                ps.executeUpdate();
                conn.commit();
            } catch (Exception e) {
                conn.rollback();
                System.out.println("rollback");
                throw e;
            }

24行目は、executeUpdateメソッドでSQLを実行しています。
SQLの処理が成功した場合、25行目のCommitメソッドで確定されます。
ここでエラーがあった場合は、25行目は実行されず、26行目のcatchに処理が移動し27行目のrollbackメソッドでデータをロールバックします。例えばinsert文を2つ発行したとして一つは成功しもう一つは失敗した場合、2つともデータ更新はしません。

updateの場合

    = "update syain set name = ? ,romaji = ? where id = ?";

updeteを行う場合は、12行目のSQL文と20~22行目のパラメータの設定を修正します。

                ps.setString(1, "竹田test2");
                ps.setString(2,"takedatest2");
                ps.setInt(3,1);

deleteの場合

    = "delete from syain where id = ?";

deleteを行う場合も12行目のSQL文と20~22行目のパラメータの設定を修正します。

                ps.setInt(1,1);

Oracleのドライバを取得する

1.Oracleのサイトにアクセスし、Oracle 11gのドライバのリンクをクリックします。
https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html

 

2.ojdbc6.jarをクリックしてダウンロードします。

ドライバをクラスパス(ビルドパス)に追加する

取得したドライバ(ojdbc6.jar)をクラスパスに追加します。

クラスパスに追加する手順は、以下を参照願います。
Eclipse jarファイルをクラスパスに設定する方法

クラスパスに追加するとEclipseでは以下のように表示されます。

関連の記事

Java Oracleに接続してselectするサンプル

△上に戻る