ScalaからJDBC接続でOracle 11gに接続する

Posted 2010年11月17日 by

ScalaからJDBC接続でOracleに接続してみました。

JDBCを直接使っているのでJavaで書いているのと処理の流れは同じです。

package Hello

import java.sql.{DriverManager, Connection, Statement, ResultSet,SQLException}

object SqlSelect {
  var jdbcURL = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL"
  var user ="scott"
  var passwd ="tiger"

  def main(args : Array[String]) : Unit = {
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver").newInstance()
        var con = DriverManager.getConnection(jdbcURL,user,passwd)
        try {
           var stmt = con.createStatement()
           var rs = stmt.executeQuery("SELECT * FROM EMP")
           while (rs.next()){
              print(rs.getString(1) + " ")
              print(rs.getString(2) + " ")
              print(rs.getString(3) + " ")
              print(rs.getString(4) + " ")
              print(rs.getString(5) + " ")
              print(rs.getString(6) + " ")
              println(rs.getString(7))
          }
          stmt.close()
      } catch {
         case e:SQLException => println("Database error "+e)

         case e => {
           println("Some other exception type:")
           e.printStackTrace()
         }
      } finally {
         con.close()
      }
   } catch {
      case e:SQLException => println("Database error "+e)
      case e => {
        println("Some other exception type:")
        e.printStackTrace()
     }
  }
 }
}



このプログラムをテストするにはOracleデータベースの環境が必要です

OracleDBは同じPCにあるので、jdbcURL 値のIPアドレスは127.0.0.1 です。

SIDはORCL。ポートの1521もでデフォルトです。



よくある障害

このプログラムをテストするとき、データベースのサンプルスキーマの scott ユーザーでログオンできず、
「ORA-28000: アカウントがロックされています。 」というエラーにお目にかかるでしょう。

こんときは、SQL*Plusを使ってロックを解除します。パスワードが期限切れなら再設定。

ユーザー名を入力してください: sys as sysdba
パスワードを入力してください:

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
に接続されました。
SQL> alter user scott account unlock;

ユーザーが変更されました。

SQL> connect scott/tiger
ERROR:
ORA-28001: パスワードが期限切れです。

scottに対するパスワードを変更しています。
新規パスワード:
新規パスワードを再入力してください:
パスワードが変更されました。
接続されました。
SQL>



とういうことで、scottでログオンできるようになります。

次に、サンプルのEMP表があるかDESCコマンドを使って確認します。

SQL> desc emp
 名前                                      NULL?    型
 ----------------------------------------- -------- --------------

 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)



EMP表があればテストプログラムは大丈夫きっと動きます。


コメントを残す