Javaで作ったDBクラスのSelect文の結果を、複数レコードをArrayListで、1レコードをObject[] 配列で返す仕様で作りました。
これをScalaで受け取るには、Java配列をScalaで使うには以下のように書きます。
val f: Array[Object] = record.asInstanceOf[Array[Object]]
これを使ったプログラム。
package ews.servlet import seedo.database._ import java.io.PrintWriter class db02 { def run(out:PrintWriter) : Unit = { val sqlplus = new SqlPlus try { val records = sqlplus.select("*").from("EMP").whereParam("EMPNO=? OR EMPNO=? OR ENAME=?",Array(new Integer(7788),new Integer(7521),"JONES") ).orderBy("ENAME").executeQuery out.println("<table border='1'>") for(i <- 0 to records.size-1) { val record = records.get(i) val f: Array[Object] = record.asInstanceOf[Array[Object]] out.println("<tr>") for(j <- 0 to f.length-1) { out.println("<td>" + (if(f(j)!=null){f(j)}else{""}) + "</td>") } out.println("</tr>") } out.println("</table>") } finally { sqlplus.close } } }
可変長引数
Javaの可変長引数についてJDK1.4で可変長引数を使えるように作った whereParam関数。
JDK1.5以降ではwhere関数は…で可変長引数が使える。
引数をArray配列にして渡します。