2

我知道SQL Developer 可以使用高级格式选项( ++ )制作 Java 字符串,但它或 Eclipse 可以反过来吗?是否有快速命令来评估(或至少取消引用/解包)Java 字符串?CtrlShiftF7

鉴于这种:

"SELECT * " +
"FROM table " +
"ORDER BY status"

我要这个:

SELECT *
FROM table
ORDER BY status
4

2 回答 2

1

您可以做一个简单的替换,在其中查找引号并将它们替换为空,然后对 + 符号执行相同操作。删除项目通常比添加项目更容易,因此添加引号的便利功能。

代码示例

String.replaceAll("\"", "");
String.replaceAll("+", "");

如果您希望能够在一行中完成,您可以使用正则表达式

String pattern = "[\+\"]";
// Use the following on any string you want to format.
String.replaceAll(pattern, "")); 
于 2013-06-05T14:56:02.467 回答
0

另一种解决方案是将查询存储在 SQL 文件中并将其作为资源使用。与图像(我们不存储为 Base64 编码字符串)类似,我们可以将它们存储在我们的 Java 外部(我们应该这样做,因为它们不是 Java,它们是 SQL)

private String getTextResource(String Resource){
    InputStream in = getClass().getResourceAsStream(Resource);
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String line = null;
    ArrayList<String> lines = new ArrayList<String>();
    try {
        while((line = reader.readLine()) != null){
            lines.add(line);
        }
    } catch (IOException e) {
        return null;
    }
    return Joiner.on("\n").join(lines);
}

public float getCurrentRiskAssessmentFactor(){
    String sql = getTextResource("MyComplexSQL.sql");
    return db.getQueryStatment(sql).get(0);
}

使用这种技术,您可以以可测试的格式维护复杂的查询。可以在您最喜欢的 SQL 编辑器中打开和测试 sql 文件,或者(独立地)针对数据库运行。这避免了在工具之间切换时的转录错误和工作量。

我与一位开发人员一起工作,他将整个数据库访问抽象化,这样您就只能指定 SQL 资源,而不能传入原始 SQL。

另外,安装 Eclipse DTP。这将允许您直接从 Eclipse 运行查询(或至少为您提供语法高亮显示)。

http://www.eclipse.org/datatools/downloads.php

优化提示:如果这样做,可能建议对 SQL 使用某种延迟加载/缓存机制

于 2016-05-19T13:01:08.090 回答