SqlSelectをクラス化

Posted 2010年11月17日 by

いよいよ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 の要素はどのようにアクセスすればいいのでしょうね。

まだまだ勉強。

Post Details

  • Post Title: SqlSelectをクラス化
  • Author: admin
  • Filed As: Scala
  • Tags:
  • You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

コメントを残す