我必须在sqlquery上使用groovy Eval()并在运行时对其求值。 我正在使用
query =groovy.util.Eval.x(sqlQuery,sqlQuery); and
sqlQuery =select Distinct <col1> from Tablename where criteira1=<cond> AND Clas1.getDateonDBType(fieldname)
我必须评估Clas1.getDateonDBType(fieldname),它是运行时的一种Java方法,因为这取决于我连接到的DB。 Eval函数能够获取sqlQuery但抛出
之类的异常Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 1: unexpected token: DISTINCT @ line 1, column 8.
我不熟悉groovy。请帮助我找出问题所在
答案 0 :(得分:0)
说实话,我想你走错了路
Groovy eval
可以评估Groovy脚本,而不是直接评估SQL。 SQL由您的数据库评估。您的Groovy-Script可以包装SQL语句,与数据库建立连接,然后数据库执行SQL并返回结果。
据我了解,您想使用Groovy是因为您需要评估getDateonDBType()
。你不能做这样的事情:
String dateonDBType = Clas1.getDateonDBType(fieldname)
sqlQuery = "select Distinct <col1> from Tablename where criteira1=<cond> AND "+dateonDBType
这将在Java中正确构造正确的sqlQuery
,然后您可以连接到DB并执行SQL,而不必评估Groovy代码。
希望有帮助