【发布时间】:2014-01-12 11:01:51
【问题描述】:
我正在编写一个应用程序来搜索表单中的特定字段并将相应的查询显示给用户(用户可以保存执行的查询并稍后加载查询)。我正在使用 API 根据所选字段生成查询。 API 以以下格式返回生成的查询。
生成的查询:
SELECT T0."id" AS "COL0"
FROM student_table T0
WHERE ( ( ( T0."student_name" = ? )
AND ( T0."grade" = ? ) )
AND ( T0."student_no" LIKE ? ) )
预期查询:
SELECT T0."id" AS "COL0"
FROM student_table T0
WHERE ( ( ( T0."student_name" = 'John' )
AND ( T0."grade" = 'A' ) )
AND ( T0."student_no" LIKE '12%' ) )
现在我必须从上面的查询中构建正确的查询。由于我在 from 中有字段值,我想替换“?”具有相应的值。
是否可以替换“?”使用java字符串replaceAll方法对应的字段值?我们可以使用反向引用的概念将问号替换为相应的值吗?如果无法使用正则表达式,请提出更好的方法来解决问题。
编辑
我认为准备好的语句不会有太大帮助,因为我需要为数百个无序字段自动执行此过程,而且这也是一项非常昂贵的操作。 (如果我错了,请纠正我)
我实际上使用的是我公司特定的平台 API,我将条件和查询列添加到查询定义中,它以上述格式返回执行的查询。用户应该能够保存预期查询,我应该在 UI 中显示查询和查询结果。
【问题讨论】:
-
看看preparedStatement。 docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
-
你在使用什么 API 以及如何使用
-
显示查询构建代码
标签: java sql regex oracle11g matcher