我的电脑里有sql文件:
示例:C:UsersUserDesktopQueriestest.sql
示例中test.sql
查询:
Select * from table where colname like '%me%';
我在这样的 java 程序中运行它:
FileReader SomeName = new FileReader("C:UsersUserDesktopQueriestest.sql");
ResultSet rsjs = null;
rsjs = jsscript.runScript(myconn, SomeName);
这工作正常,但现在我需要一种方法来在此 sql 文件中传递参数,以便查询如下所示:
Select * from table where colname like @parameter;
可能吗?
PS:我不能直接在java程序中使用查询。我知道如何在查询中传递参数,但这个问题与在 sql 文件中传递参数有关。存储程序也是不可选择的。
你应该研究一下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)