我的电脑里有sql文件:
示例:C:\Users\User\Desktop\Queries\test.sql
test.sql
示例中的查询:
Select * from table where colname like '%me%';
我在这样的java程序中运行它:
FileReader SomeName = new FileReader("C:\Users\User\Desktop\Queries\test.sql");
ResultSet rsjs = null;
rsjs = jsscript.runScript(myconn, SomeName);
这工作正常,但现在我需要一种方法来传递这个sql文件中的参数,以便查询如下:
Select * from table where colname like @parameter;
有可能吗?
PS:我不能直接在java程序中使用查询。我知道如何在查询中传递参数,但这个问题与sql文件中的pass参数有关。存储过程也是不可选择的。
答案 0 :(得分:0)
您应该查看StrSubstitutor
https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/text/StrSubstitutor.html。
sql字符串可以包含变量:
String query = "Select * from table where colname like ${parameter};"
然后创建一个类似的地图:
Map<String, String> values = new HashMap<>();
values.put("parameter", "%me%");
现在您可以使用以下命令替换变量:
StrSubstitutor sub = new StrSubstitutor(values);
return sub.replace(query);
编辑1:
如果查询来自文件,您可以读取该文件并将其存储在字符串中。查看Files.readAllLines(path, charset)