1

我在 Java 字符串中有一个很长的 SQL 语句。在eclipse中,如何在没有Java String语法的情况下轻松获取SQL语句的文本?我一直在手动删除它,但在 IntelliJ Idea 中,无需执行任何手动格式化工作来删除 Java 字符串语法(例如"+字符)即可获取文本。Eclipse 有类似的功能吗?

作为一个额外的好处,我会问是否也可以在 IDE 中格式化后,即使\n字符串本身不存在任何字符,也可以获取带有换行符的字符串。

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>标签它应该保留空格),但是您的 SQL IDE 应该可以帮助您,不是吗?

于 2012-07-16T12:49:30.277 回答
1

(我们正在使用开普勒)

  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. 另一个不错的解决方案似乎是Multiline注释,可以在其中维护 javadoc 中的字符串(在编译时将转换为格式正确的字符串):https ://github.com/benelog/multiline

  4. *.sql如果合适的话,在单独的文件中外部化大型字符串/SQL(并从类路径中读取它们)将是第二个最佳选择:

  5. 我们来说最好的解决方案是在我们的 Java 代码旁边使用Groovy(“Java 脚本扩展”):

    • 你需要安装Groovy 插件 https://github.com/groovy/groovy-eclipse/wiki
    • 只是说New -> Groovy ClassGroovy Nature自动添加到我们的项目中,然后,您可以将 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.groovy文件 => 打开 ... => 其他 => SQL 编辑器(来自非常好的Eclipse Data Tools Platform (DTP) pluginhttps ://eclipse.org/datatools/ )

    • 您可以随时在编辑器之间切换(Eclipse 会记住每个文件的最后一次使用)
  2. 从自定义的预配置数据库连接中为该文件选择正确的连接(如果尚未完成,则必须打开/连接)

  3. 标记待调试的SQL +ALT+X

  4. 将查询结果调试为选项卡式或纯文本结果...

于 2015-09-10T06:22:59.390 回答