我正在尝试使用字符串格式化程序,但它没有按预期工作..
当我打印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");
}
}
答案 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中的警告。
注意第二个参数是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。