在java中的sql server脚本文件中传递参数

时间:2018-03-12 02:48:48

标签: java sql-server filereader

我的电脑里有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参数有关。存储过程也是不可选择的。

1 个答案:

答案 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)