Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Groovy Eval函数,用于计算sql查询的某些部分_Java_Sql_Groovy - Fatal编程技术网

Java Groovy Eval函数,用于计算sql查询的某些部分

Java Groovy Eval函数,用于计算sql查询的某些部分,java,sql,groovy,Java,Sql,Groovy,我必须在sqlquery上使用groovy Eval(),并在运行时对其求值。 我用的是like query =groovy.util.Eval.x(sqlQuery,sqlQuery); and sqlQuery =select Distinct <col1> from Tablename where criteira1=<cond> AND Clas1.getDateonDBType(fieldname) 我是groovy新手。请帮我找出哪里出了问题。老实说,我

我必须在sqlquery上使用groovy Eval(),并在运行时对其求值。 我用的是like

query =groovy.util.Eval.x(sqlQuery,sqlQuery); and 
sqlQuery =select Distinct <col1> from Tablename where criteira1=<cond> AND Clas1.getDateonDBType(fieldname) 

我是groovy新手。请帮我找出哪里出了问题。老实说,我想你走错了路

Groovy
eval
可以评估Groovy脚本,而不是直接评估SQL。SQL由数据库进行评估。Groovy脚本可以包装SQL语句,建立到DB的连接,然后DB执行SQL并返回结果

据我所知,您希望使用Groovy,因为您需要计算
getDateonDBType()
。你不能这样做吗:

String dateonDBType = Clas1.getDateonDBType(fieldname)
sqlQuery = "select Distinct <col1> from Tablename where criteira1=<cond> AND "+dateonDBType
String dateonDBType=Clas1.getDateonDBType(字段名)
sqlQuery=“选择与表名不同,其中criteira1=和“+dateonDBType”
这将在Java中构造正确的
sqlQuery
,然后您可以连接到DB并执行SQL,而无需计算Groovy代码


希望对groovy不能
评估sql
有帮助。使用groovy,您可以通过将查询发送到数据库来执行查询。是否要执行sql查询并从groovy返回结果集?或者您想使用groovy构建/编写sql查询?我想构建/编写sql查询,因为来自db的查询可以是任何内容,但会有class1.getDAteonDbType(fieldName)在我们的java类中,当遇到此类表达式时,应该在groovy文件中替换这些表达式。这只是我给出的一个示例,但查询中还有许多其他表达式需要替换。因此,我尝试使用Eval函数。从您的问题中不清楚您想要实现什么。您能否编辑您的问题,并描述您在评估之前有什么以及评估之后您希望有什么…此sqlQuery存储在DB中,我们正在从DB读取它。此查询可以有其他表达式,如checkforNull等。因此,对于每个表达式,我们将无法用变量替换。我的问题是转换为sqlQuery,然后脚本将获得连接并执行查询。我们使用的是3个不同的数据库,并且此查询需要在所有3个数据库中工作。Clas1包含与所有3个数据库相关的函数,我用这种方式尝试sqlQuery=groovy.util.Eval.me(“${sqlQuery}”);但是它给了我一个异常,原因是:groovy.lang.MissingPropertyException:类:Script1没有这样的属性:Class1。很抱歉插入了Line的代码。我想您缺少的是将属性绑定到已执行脚本的
${sqlQuery}
中包含的脚本对外部定义的变量一无所知。因此,您需要将所需的变量绑定到脚本的执行。我想如果你搜索“groovy eval binding”,你会找到一个解决方案。。。
String dateonDBType = Clas1.getDateonDBType(fieldname)
sqlQuery = "select Distinct <col1> from Tablename where criteira1=<cond> AND "+dateonDBType