いよいよWeb
Tomcatで使うために、いままでObjectだったロジックをクラス化してみました。
def text は、EMP表から取ってきたレコードをテーブルタグで加工するためのものです。
def oracleは、java.util.ArrayListクラスに1レコードずつタプルを代入して返します。
import java.sql.{DriverManager, Connection, Statement, ResultSet,SQLException} import java.util.Date import java.util.ArrayList class OracleSelect { var jdbcURL = "jdbc:oracle:thin:@192.168.0.105:1521:ORCL" var h:String = "" def text = h def oracle : ArrayList[Any] = { var list = new ArrayList[Any] try { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance() var con = DriverManager.getConnection(jdbcURL,"scott","tiger") try { var stmt = con.createStatement() var rs = stmt.executeQuery("SELECT * FROM EMP") h = "<table border='1>" while (rs.next()){ val one = (rs.getInt("empno") , rs.getString("ename") , rs.getString("job") , rs.getInt("mgr") , rs.getDate("hiredate") , rs.getInt("deptno") , rs.getInt("sal") ) h = h+"<tr><td>"+rs.getInt("empno")+"</td><td>"+ rs.getString("ename")+"</td><td>"+rs.getInt("deptno")+"</td></tr>" list.add(one) } h = h + "</table>" 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() } } list } }
テーブルに22個よりも多いカラムがあるとタプルで記述したこのコードでは使えないので、Listを使うとすると次のようになります。
val one = List(rs.getInt("empno") , rs.getString("ename") , rs.getString("job") , rs.getInt("mgr") , rs.getDate("hiredate") , rs.getInt("deptno") , rs.getInt("sal") )
このクラスをJavaで使うとなると Scala の List の要素はどのようにアクセスすればいいのでしょうね。
まだまだ勉強。
コメントを残す
コメントを投稿するにはログインしてください。