JavaでSQLクエリを使用したい場合、通常は最終的な文字列変数に保持します。ここで、文字列が大きすぎると、ページの幅がなくなり、手動で分割する必要があります(Eclipseでは、文字列の特定の場所に移動し、Enterキーを押して、結果の小さい文字列ごとに実行します。一部)、またはEclipseでフォーマッターを設定して(たとえば)1行あたり100文字のみを許可することができます。しかし、文字列は論理的な方法で壊れていません。
SQL Developer(たとえば)でクエリを適切にフォーマットできますが、Javaで貼り付ける場合は、すべての終了引用符と+
記号を手動で設定して適切なものにする必要がありますJava文字列。適切にフォーマットされたSQLクエリをJavaファイルに直接コピーして貼り付ける方法を知りたいだけです。Eclipseを使用しています。
おそらく、クエリが次のようにフォーマットされている場合:
SELECT
*
FROM
something
WHERE
id=4;
次に、Java文字列内に貼り付けると、次のようになります。
"SELECT" +
" *" +
" FROM" +
" something" +
" WHERE";
id=4;
Eclipseでは、[ウィンドウ]> [設定]の下のJava>エディター> [文字列リテラルに貼り付けるときにテキストをエスケープする]]チェックボックスをオンにします。
プレーンテキストをフォーマットします。
line1
line2
line3
に:
private final String TEXT = "line1\r\n" +
"line2\r\n" +
"line3";
これはEclipseHeliosでの出力です。同様の質問: 引用符で囲む
生成されたSQL出力の余分な空白を気にしない場合の創造的な解決策は次のとおりです。
フォーマットされたSQLステートメントを逐語的にJavaファイルに貼り付けます
左から6番目の強調表示されたボタンに注目してください。これは素晴らしい「ブロック選択モード」(WindowsではAlt-Shift-A)です。選択した各行の同じ位置に開始引用符を書き込むことができます
終了引用符と連結記号にも同じ手法を適用します(+
)
ここにコメントは必要ありません。
SQLDeveloper
にいるときに、クエリを選択し、Ctrl + F7
を使用してフォーマットします。もう一度選択し、Ctrl + Shift + F7
を使用して高度なフォーマットを行い、出力先としてClipboard
を選択し、必要なタイプとして出力タイプを選択して、Apply
をクリックします。次に、Eclipseエディターに貼り付けて、違いを確認します。
SQLDeveloperのバージョン3.1.07を使用しています。
実は本当に良い質問ですが、それについてもよく疑問に思います。私があなたに与えることができる1つのヒントは以下を使用することです:
//@formatter:off
private static final String QUERY =
"SELECT t.* " +
"FROM table t " +
"WHERE t.age > 18";
//@formatter:on
SQLクエリをJava文字列リテラルに変換しませんが、Eclipseが文字列を不自然に読みにくく再フォーマットするのを防ぎます。
私はこのパーティーに遅れていることを知っていますが、大きなクエリを使用している人にとって、Eclipseのブロックモードは、100行以上のクエリがあると遅くなるため、操作が非常に難しい場合があります(あなたのマシン上で)。
私はこのサイトを見つけました、そしてそれはとてもシンプルでとても速いです。コードをウィンドウに投稿し、プレフィックス( ")とサフィックス(" +)を追加して、[名前を付けて保存]をクリックします。プレフィックスとサフィックスを各行にすばやく追加します。
オンラインツールは次のとおりです。
DbVisualizer
の場合、Ctrl + Alt + K
を使用して、SQLを目的のパターンにフォーマットできます。
これは非常に近いです:先頭の空白でインデントされたSQLを貼り付ける方法: https://stackoverflow.com/a/121513/1665128
String sql =
"SELECT\n" +
" *\n" +
" FROM\n" +
" something\n" +
" WHERE\n" +
" id=4;";