2016-07-28 105 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,但当我做选择操作时,我需要以逗号分隔值的形式获取表格数据。我想将它存储在一个字符串中。 –

回答

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语句以保证结果的顺序,并因此按位置引用它们。 –

相关问题