Вы обязательно должны использовать PreparedStatement , если это необходимо.
Если вам потребуется выполнить замену самостоятельно, я не знаю о каких-либо встроенных возможностях.Тем не менее, это довольно просто бросить свой собственный.Вот несколько версий:
static String replaceN(String s, String del, String... rep)
{
for(int i=0; i<rep.length; i++)
{
s = s.replaceFirst(del, rep[i]);
}
return s;
}
Или, возможно, более эффективная версия:
static String replaceN2(String s, String del, String... rep)
{
String[] parts = s.split(del);
StringBuilder b = new StringBuilder(parts[0]);
for(int i=0; i<rep.length; i++)
{
b.append(rep[i]);
b.append(parts[i+1]);
}
return b.toString();
}
Тест:
public static void main(String[] args)
{
String q = "select * from gfc.LSI_ELGBLTY where INSURANCE_ID = ? and SYS_CD = ? and ACCT_TYPE in (?);";
System.out.println(replaceN(q, "\\?", "one", "two", "three"));
}
Вывод:
select * from gfc.LSI_ELGBLTY where INSURANCE_ID = one and SYS_CD = two and ACCT_TYPE in (three);