0

文字列フォーマッタを使用しようとしていますが、期待どおりに動作しません..

を印刷する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");
    }
} 
4

3 に答える 3

6

そうでなければならないと思う

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

これは、オブジェクトインスタンスに対して静的メソッドを実行できるため、混乱を招く可能性があるというJavaの奇妙なことによるものです。この場合のオブジェクト インスタンスは "SELECT * FROM %s" です (このような混乱を引き起こすため、これは私の最大の悩みの 1 つです)

ドキュメントを見てください。args 要素は varargs であるため、実際にはパラメーターを取りません。

于 2013-07-31T14:54:47.827 に答える
2

あなたは正しい方法でメソッドを呼び出していません:

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

IDE の警告を読んでおく必要があります。

ドキュメントを読んでください。

2 番目の引数は varargObject... argsであるため、正常にコンパイルされていることに注意してください。

于 2013-07-31T14:56:14.043 に答える
2

String.formatString format, Object... args最初の引数がフォーマットであり、残りがその引数である静的メソッドです。この方法を使用する場合、コードは次のようになります。

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

ただし、SQL クエリの作成には使用しないString.formatでください。SQL インジェクションを回避する代わりに、PreparedStatementsを使用してください。この例も見てください。

于 2013-07-31T15:02:22.113 に答える