带有printf的Java StringBuilder。等价String.format

时间:2013-07-01 17:04:46

标签: java string stringbuilder string.format

我正在使用StringBuilder构建一个非常长的查询。

StringBuilder sb = new StringBuilder();
sb.append("select * from x where name = %s'");
String.format(sb.toString, "John"); 

什么相当于这样的东西?或者这实际上是正确的方法吗?

3 个答案:

答案 0 :(得分:5)

您似乎正在尝试为SQL构建字符串。为此,应使用PreparedStatement代替。

PreparedStatement preparedStatement = 
        connection.prepareStatement("select * from x where name = ?");
preparedStatement.setString(1, "John");

编辑:

鉴于您使用的是EntityManager,您可以使用等效的setParameter

Query q = 
 entityManager.createNativeQuery("select * from x where name = ?", MyClass.class);
q.setParameter(1, "John");

答案 1 :(得分:1)

这可能会对你有所帮助。 con是连接的地方

    PreparedStatement preStatement = con.prepareStatement("select * from x where name = ?");
    preStatement.setString(1, "John");

答案 2 :(得分:0)

如果您不使用SQL,则对于常规格式的追加,可以使用Formattor的{​​{1}}方法。

例如

format()