java - 有没有一种干净的方法来读取嵌入式 SQL 资源文件?

标签 java sql resources openedge

为了避免在类中将 SQL 语句创建为字符串,我将它们作为 .sql 文件放在同一个包中,并在静态构造函数中将内容读取为字符串。原因是 SQL 非常复杂,因为 SQL 查询的是 ERP 系统。

这个方法没有问题,虽然因为 SQL 读取机制非常简单地只读取整个文件,如果该文件中的任何注释位于行尾,则可能导致读取失败,因为在第一次读取时会删除多余的空格并删除换行符。完整注释行(即删除以 -- 开头的行)。

我可以增强简单阅读以读取文件并删除注释行等,尽管我想知道是否已经有可用的东西可以读取 SQL 文件并清理它。

最佳答案

我在我从事的一个项目中看到了同样的问题,方法是将查询存储在 XML 中,并在运行时将 XML 加载到自定义的 StoredQueriesCache 对象中。要获取查询,我们将在 StoredQueriesCache 对象上调用一个方法并仅传递查询名称(在 XML 中定义),它会返回查询。

写这样的东西相当简单。 XML 如下所示...

<Query>
  <Name>SomeUniqueQueryName</Name>
  <SQL>
    SELECT someColumn FROM someTable WHERE somePredicate
  </SQL>
</Query>

每个存储的查询都有一个元素。 XML 将在应用程序启动时从文件加载到内存中,或者根据您的需要,它可以从文件延迟加载。然后,保存 XML 的 StoredQueriesCache 对象将具有按名称返回单个查询的方法。根据我的经验,在查询中添加注释从来不会导致任何问题,因为换行符是 XML 节点内部文本的一部分,但如果您希望检索查询的 StoredQueriesCache 方法可以解析注释。

我发现这是最有条理的存储查询的方式,无需将查询嵌入代码,也无需使用存储过程。老实说,应该有一个图书馆可以为您做这件事;也许我会写一个!

关于java - 有没有一种干净的方法来读取嵌入式 SQL 资源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12420701/

相关文章:

java - LongPress 可以在 move 事件后触发吗?

java - 从文件读取问题

mysql - 如何在mysql数据库中保存所有版本的帖子

sql - 在 SQL 2005 中的 WHERE 子句中使用命名的自定义列?

android - 使用 Ant 构建的 Android 项目中的库资源

java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'XXX'

java - 追加到 XML 文件

mysql - 从另一个表更新 MySQL 表

wpf - 为什么允许 ImageSource 作为 WPF 资源?

c# - .net c#一次加载XML文件的方法