3

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

这种方法没有问题,但由于 SQL 读取机制很简单地读取整个文件,如果该文件中的任何注释位于行尾,则可能导致读取失败,因为首先读取它时会删除多余的空格和删除换行符。--完整的注释行(即删除以开头的行)。

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

4

1 回答 1

0

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

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

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

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

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

于 2012-10-10T20:00:30.727 回答