字符串格式化程序不格式化整个字符串

时间:2013-07-31 14:52:32

标签: java

我正在尝试使用字符串格式化程序,但它没有按预期工作..

当我打印SQL_QUERY时,它只打印TABLE1,我想要整体结果"SELECT * FROM TABLE1"

package mysql.first;

public class twoconstructor {
    public static void main(String[] args) throws Exception {
            final String SQL_QUERY = "SELECT * FROM %s ".format("TABLE1");
    }
} 

3 个答案:

答案 0 :(得分:6)

我认为必须是

String.format("select * from %s", "TABLE 1");

这是由于java中的一个奇怪的事情,你可以对对象实例运行静态方法,所以它可能会令人困惑。在这种情况下你的对象实例是“SELECT * FROM%s”(这是我最大的烦恼之一,因为它会引起这样的混乱)

看看docs。 args元素是varargs所以它实际上不需要参数。

答案 1 :(得分:2)

您没有以正确的方式调用该方法:

 final String SQL_QUERY = String.format ("SELECT * FROM %s ","TABLE1");

您应该已经阅读了IDE中的警告。

阅读documentation

注意第二个参数是vararg Object... args,因此它编译得很好。

答案 2 :(得分:2)

String.format是静态方法,取String format, Object... args,其中第一个参数是格式,rest是其参数。如果您想使用此方法,您的代码应如下所示

String SQL_QUERY = String.format( "SELECT * FROM %s ", "TABLE1")

但是从不使用String.format来创建SQL查询。而是避免SQL injection使用PreparedStatements。另请查看this example