2016-07-28 1 views
0

テーブルからデータ全体をフェッチしようとしていますが、その結果はコンマ区切りの文字列でなければなりません。ここでうまく動作している私のコードです。テーブルからデータ全体を取得するためのより良いアプローチGroovy Sql

import groovy.sql.Sql; 
import java.sql.ResultSet; 

def temp=""; 
def temp1=""; 
sql = Sql.newInstance("jdbc:oracle:thin:@localhost:1521:XE","username", "password", "oracle.jdbc.driver.OracleDriver") 
sql.eachRow("select * FROM employee") { 
temp1=it.toRowResult().values().join(", ") 
if(temp=="") 
      { 
      temp=temp1; 
      } 
else 
      { 
      temp=temp+"\n"+temp1 
      } 

} 

この要件をGroovyで処理するためのより良いアプローチがあるかどうかをお勧めします。

+0

「csv」ファイルに保存することをお勧めしますか? – Rao

+0

いいえcsvにはありませんが、私は選択操作を行うときに、カンマで区切った値の形式でテーブルデータを取得する必要があります。私はそれをStringに格納したい。 –

答えて

0

簡単な解決策それを維持以下の通りです:

import groovy.sql.Sql; 
import java.sql.ResultSet; 

Sql sql = Sql.newInstance("jdbc:oracle:thin:@localhost:1521:XE","username", "password", "oracle.jdbc.driver.OracleDriver") 

StringBuilder builder = new StringBuilder() 

sql.eachRow("select * FROM employee") { row -> 
    builder.append("${row.employeeId},") // no idea what your column names are 
} 

return builder.toString() // should trim trailing comma but I'll save that for you 

また)(ジェクトでこれを行うことができるかもしれませんが、私は前にSQL結果セットにそれを試していませんでした。

+0

私は列名を指定するのではなく、すべての列のデータを読み込む必要があります。ここで、カンマは、各列の値の区切り記号にする必要があります。このシナリオを達成する方法はありますか? –

+0

カラム名を使用しない場合は、カラム位置の整数値を使用できます。ただし、「select *」は返される列の順序についてはあまり具体的ではありません。結果の順序を保証するために列名をselect文に追加する必要があり、その結果、それらを位置で参照する必要があります。 –

関連する問題