替换两美元符号之间的值

时间:2013-02-11 11:14:26

标签: java

我需要替换两美元($)符号之间的值。

下面是我尝试的方式,但我不认为这是一种优雅的方式。

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代码实现这种逻辑的最佳方法吗?

需要你的建议。

1 个答案:

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