我需要替换两美元($)符号之间的值。
下面是我尝试的方式,但我不认为这是一种优雅的方式。
String queryNoAdditionalFilter= SELECT PRODUCTNAME,PRODUCTSKEY FROM PRODUCTS WHERE PRODUCTID=$productid$
int start= queryNoAdditionalFilter.indexOf("$");
int end= queryNoAdditionalFilter.lastIndexOf("$");
String valueSubstitutedToFilter1 = queryNoAdditionalFilter.substring(start+1, end);
String keyToReplace = "\\$"+valueSubstitutedToFilter1+"\\$";
String valueSubstitutedToFilter2=queryNoAdditionalFilter.replaceAll(keyToReplace, "401250");
final outcome is :SELECT PRODUCTNAME,PRODUCTSKEY FROM PRODUCTS WHERE PRODUCTID=401250
这是通过java代码实现这种逻辑的最佳方法吗?
需要你的建议。
答案 0 :(得分:3)
我认为你应该使用PreparedStatement。
尽管PreparedStatement对象可以用于SQL语句 没有参数,您可能最常使用它们用于SQL语句 拿参数。使用SQL语句的优点 参数是您可以使用相同的语句并提供它 每次执行时都会有不同的值。
以下是如何使用它(来自链接的文档)
String updateString =
"update " + dbName + ".COFFEES " +
"set SALES = ? where COF_NAME = ?";
updateSales = con.prepareStatement(updateString);
updateSales.setInt(1, e.getValue().intValue());
updateSales.setString(2, e.getKey());