1

2つのドル($)記号の間の値を置き換える必要があります。

以下は私が試した方法ですが、それがエレガントな方法だとは思いません。

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コードを介してこのロジックを実装するための最良の方法はどれですか?

あなたのアドバイスが必要です。

4

1 に答える 1

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());
于 2013-02-11T11:17:27.680 に答える