在 Java 中的 SQL Server 脚本文件中传递参数



我的电脑里有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 文件中传递参数有关。存储程序也是不可选择的。

你应该研究一下StrSubstitutorhttps://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)