首页 > 解决方案 > Groovy Eval 函数来评估 sql 查询的某些部分

问题描述

我必须在 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 的新手。请帮我找出问题所在

标签: javasqlgroovy

解决方案


老实说,我猜你走错了路

Groovyeval可以评估 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

这将sqlQuery在 Java 中构建正确的权限,然后您可以连接到数据库并执行 SQL,而无需评估 Groovy 代码。

希望有帮助


推荐阅读