1

Java文字列内に非常に長いSQLステートメントがあります。Eclipseで、Java文字列構文なしでSQLステートメントのテキストを簡単に取得するにはどうすればよいですか?私は手動で削除してきましたが、IntelliJ Ideaでは、Java文字列構文(文字など)を削除するために手動でフォーマット作業を行うことなく、テキストを取得することができ"ます+。Eclipseにも同様の機能がありますか?

\n追加のボーナスとして、文字列自体に文字が存在しない場合でも、IDEでフォーマットされたとおりに改行を配置した文字列を取得することも可能かどうかを尋ねます。

4

2 に答える 2

1

SQLクライアントによっては、この機能を備えている場合があります。TOADにはこの機能が組み込まれていることを私は知っています。リスが持っていたのも覚えています。

したがって、TOADのSQLエディターに貼り付けると、コードはJava文字列構文から自動的に抽出されます。StringBuffer/StringBuilderのような構造でも機能したことを覚えています。

参照:http ://dev.toadformysql.com/webhelp/Content/Editor/Convert_SQL_Embedded_SQL.htm

または、サンプルコード(このjsfiddleなど)で機能する単純な正規表現を作成することもできます。これは、次のようなSQLの正規表現で機能します。

"select something \r\n" +
"  from dual " +
 "where 1 = 1\r\n"; 

jsfiddleは出力する必要があります

select something
  from dual
 where 1=1

それでも、美しくフォーマットされていません(<pre>タグを使用してもスペースを保持する必要があります)が、SQLIDEがそれを支援するはずです。

于 2012-07-16T12:49:30.277 に答える
1

(Keplerを使用しています)

  1. このStringUtilsプラグインは非常に見栄えがします:http://marketplace.eclipse.org/content/stringutils-plugin(スクリーンショットをクリックしてください)。

    • インストール用のEclipseマーケットプレイスダイアログに見つかりません
    • GITリポジトリからマスターZIPをダウンロードしましたが、ソリューション5を支持しませんでした。
  2. Java Multi-Line String Editorプラグインと一緒に、そのようなSQLステートメントを書く/読む/デバッグするのは本当に簡単です:https ://marketplace.eclipse.org/content/java-multi-line-string-editor

    • インストール用のEclipseマーケットプレイスダイアログに見つかりません
  3. もう1つの優れた解決策は、javadocで文字列を維持できるMultiline注釈のようです(コンパイル時に適切にフォーマットされた文字列に変換されます): https ://github.com/benelog/multiline

  4. 大きな文字列/SQLを別々の*.sqlファイルに外部化する(そして、たとえばクラスパスからそれらを読み取る)ことが適切な場合、2番目に良いオプションになります。

  5. 私たちにとって最善の解決策は、Javaコードと一緒にGroovy (「Javaスクリプト拡張機能」)を使用することでした。

    • Groovyプラグイン をインストールする必要がありますhttps://github.com/groovy/groovy-eclipse/wiki
    • Groovy NatureNew -> Groovy Classをプロジェクトに自動的に追加したと言っただけで、その後、SQLを次のような定数または列挙型として実装できます。
      • Java(編集者)がサポートするほとんどすべて(Java-Groovyバリア間でも)をサポートします。
        • コードの強調表示
        • リファクタリング(名前変更)、ただしGroovyファイル内からのみ
        • オートコンプリート/-CTRL+rightclickナビゲーション
        • Javadocヒント

src/my/pkg/SQLs.groovy

package my.pkg

class SQLs {

  /** comment X */
  static final String SEL_X = ```
    select
      bla,
      foo
    from
      bar
    where
      x in (1,2,3)
  ```
}

src/my/pkg/SqlExec.java

// ...
stmt.executeQuery( SQLs.getSEL_X() ) ;  /* Groovy auto-created this getSEL_X() 
                                        interface method transparently/auto-
                                        suggested, but the "comment X" is not 
                                        hinted */

そして、私たちのユースケースにとってより適切なのは、SQLを列挙型として使用することでした。

enum SQLs {

  /** comment X */
  SEL_X(```
    select
      ...
      x in (1,2,3)
  ```)

  String sql

  SQLs( String sql ) { this.sql = sql }
}

これは、次のようにアクセスできますsrc/my/pkg/SqlExec.java

// the JavaDoc comment "comment X" works and the getSql() is transparently 
// auto-generated by Groovy
stmt.executeQuery( SQLs.SEL_X.getSql() ) ;

そして、DTPを使用してEclipse内ですべてをデバッグすることでより多くの砂糖:-)

=>したがって、これらのSQLのデバッグは次のように簡単になります

  1. SQLs.groovyfile => Open with ... => Other => SQL Editor(from the very nice Eclipse Data Tools Platform (DTP) pluginhttps ://eclipse.org/datatools/ )

    • いつでも好きなようにエディターを切り替えることができます(Eclipseはファイルごとに最後に使用されたものを記憶しています)
  2. カスタムの事前構成されたデータベース接続からこのファイルの適切な接続を選択します(まだ行われていない場合は、開いている/接続されている必要があります)

  3. デバッグ対象のSQLのマーキング+ALT+X

  4. クエリ結果をタブ付きまたはテキストのみの結果としてデバッグします...

于 2015-09-10T06:22:59.390 に答える