ブログトップ 記事一覧 ログイン 無料ブログ開設

大人になったら肺呼吸 RSSフィード Twitter

2015-07-08

Eclipseで作るJavaからOracleに接続するサンプルプログラム

f:id:replication:20150708002136j:image

はじめに

Eclipse 4.5 MarsでOracle DBに接続するプログラムを作ってみました。

スッキリわかるJava入門 第2版
中山 清喬 国本 大悟
インプレス
売り上げランキング: 820

環境
  • Windows Server 2008 R2
  • Oracle 11g
  • Eclipse 4.5 Mars
  • JRE 1.8.0.45
事前準備

以下のページを参考に、scott/tigerのサンプルスキーマを作成してください。

サンプルプログラム(DataAccess.java)

EclipseでJavaプロジェクトを作成して、DataAccess.javaというソースファイルを追加します。

f:id:replication:20150708000937p:image

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DataAccess {

  public static void main(String[] args) {
    DataAccess dataAccess = new DataAccess();

    try {
      dataAccess.selectOracle();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void selectOracle() throws Exception {

    // ユーザ名
    String user = "scott";
    // パスワード
    String pass = "tiger";
    // サーバ名
    String servername = "localhost";
    // SID
    String sid = "orcl";

    Connection conn = null;
    Statement stmt = null;
    ResultSet rset = null;

    try {
      // JBBCドライバクラスのロード
      Class.forName("oracle.jdbc.driver.OracleDriver");

      // Connectionの作成
      conn = DriverManager.getConnection("jdbc:oracle:thin:@" + servername + ":1521:" + sid, user, pass);

      // Statementの作成
      stmt = conn.createStatement();

      // Resultsetの作成
      rset = stmt.executeQuery("select EMPNO, ENAME, JOB from EMP");

      // 取得したデータを出力する
      while (rset.next()) {
        System.out.println(rset.getString("EMPNO") + "," + rset.getString("ENAME") + "," + rset.getString("JOB"));
      }

    } catch (ClassNotFoundException e) {
      throw e;
    } catch (SQLException e) {
      throw e;
    } catch (Throwable e) {
      throw e;
    } finally {
      try {
        /* クローズ処理 */
        if (rset != null) {
          rset.close();
          rset = null;
        }

        if (stmt != null) {
          stmt.close();
          stmt = null;
        }

        if (conn != null) {
          conn.close();
          conn = null;
        }
      } catch (Throwable e) {
          // nop
      }
    }
  }
}
クラスパスにojdbc14.jarを追加する

このままだとビルドが通らないので、クラスパスにojdbc14.jarを追加します。

f:id:replication:20150708000915p:image

ojdbc14.jarは、ぼくの環境では以下のパスにありました。

C:\product\11.2.0\dbhome_1\owb\wf\lib
実行結果

このプログラムを実行すると、以下のようにコンソールにEMP表のデータが出力されます。

f:id:replication:20150708001351p:image

関連エントリ

通行人通行人 2015/09/27 10:28 Classic Aspのアプリを保守することになり、このブログの別の記事を拝見させて頂きました。ブログのタイトルのセンスが素晴らしいです。
サンプルソースですが、リソースをクローズする順番が真逆ですよ。ResultSet, Statement, Connectionの順番です。そして、finally の中でcloseする箇所もtry-catchで囲みましょう。そうしないと、最初のcloseで例外が発生すると、残りのcloseは実行されません。あとは、ThrowableをCatchしないと、DBコネクションの解放漏れの危険があります。

replicationreplication 2015/10/07 20:53 ご指摘ありがとうございました。
訂正して反映しました。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close