0

I'm trying to use a string formatter but its not working as expected..

When I print the SQL_QUERY, it prints only TABLE1, I want the overall result "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");
    }
} 
4

3 回答 3

6

我认为它必须是

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

这是由于 java 中的奇怪之处在于您可以针对对象实例运行静态方法,因此可能会造成混淆。在这种情况下,您的对象实例是“SELECT * FROM %s”(这是我最大的烦恼之一,因为它会导致这样的混乱)

看看文档。args 元素是可变参数,因此它实际上可以不带任何参数。

于 2013-07-31T14:54:47.827 回答
2

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

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

但从不使用String.format创建 sql 查询。而是使用PreparedStatements来避免SQL 注入。看看这个例子

于 2013-07-31T15:02:22.113 回答
2

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

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

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

阅读文档

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

于 2013-07-31T14:56:14.043 回答