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表があればテストプログラムは大丈夫きっと動きます。
コメントを残す
コメントを投稿するにはログインしてください。