我正在尝试使用groovy.sql.Sql对象进行一些基本查询,并且我得到一个SQLException,我似乎无法诊断或消失。我把它简化为最简单的情况,我仍然看到了问题。我的代码:
import groovy.sql.Sql
def bodyText
def sql = Sql.newInstance("jdbc:oracle:thin:@192.168.X.Y:1521:hostname",
"user", "passwd", "oracle.jdbc.OracleDriver")
sql.eachRow('select * from t_email_recipients') { row ->
assert row.body != null
java.sql.Clob clob = (java.sql.Clob) row.body
bodyText = clob.getAsciiStream().getText()
println bodyText
}
我之前有一个这个版本,但现在看起来似乎都是这样的:
Caught: java.sql.SQLException: Invalid column name
at sqlTest$_run_closure1.doCall(sqlTest.groovy:14)
at sqlTest.run(sqlTest.groovy:13)
这里有任何想法吗?我正在使用groovy 1.7.4和jdk 1.6.0_12。
答案 0 :(得分:2)
鉴于异常显示Invalid column name
并且您访问的唯一列是body
,我的第一个猜测是没有这样的列。但是你已经在评论中指出存在这样一个列,而且你已经断言该列存在于引发异常的行之前
assert row.body != null
所以这个代码似乎不可能抛出这个异常,所以我最好的猜测是你修改了这里显示的代码与实际抛出异常的代码有些不同 - 也许你不想发布真正的代码,因为它过于复杂或出于IP /隐私原因。
如果我是对的,请检查一下这段代码在功能上是否与真实代码完全相同,因为我觉得这段代码不会抛出给定的异常。
答案 1 :(得分:1)
你可以使用这样的东西
clob?.asciiStream.text