【问题标题】:Using Advantage Database Server and JDBC connection使用 Advantage 数据库服务器和 JDBC 连接
【发布时间】:2014-04-15 23:41:42
【问题描述】:

我试图弄清楚如何使用 JDBC 连接和 SQL 语句来读取驻留在 Advantage 数据库服务器上的 DBF/CDX 表(使用免费连接)并找到“已删除”的记录。 (那些被逻辑删除而不是物理删除的记录。)

我知道我可以使用 连接属性,但是我的问题是如何包含它们和 然后再识别它们。

【问题讨论】:

    标签: advantage-database-server


    【解决方案1】:

    不幸的是,我认为没有一种简单的方法可以通过 JDBC 和纯 SQL 解决方案来做到这一点。正如您所说,可以通过在连接字符串中包含ShowDeleted=true; 来显示逻辑删除的记录。但是这样做之后,就无法区分 SQL 语句中已删除和未删除的 DBF 记录了。

    也许可以编写一个Advantage Extended Procedure,它使用导航方法返回有关逻辑删除记录的信息,但这可能需要从头开始做相当多的工作。另一个想法(相当混乱/丑陋的一个)可能是使用两个单独的连接到同一个表,其中一个显示已删除的记录,另一个不显示,然后获取 ROWID 并使用它来隔离已删除的记录。不好玩。

    它现在对您没有帮助,但即将发布的版本 (v12) 将包含一个 SQL 标量函数 DELETED(),它为逻辑删除的记录返回 true/false。这正是您所需要的,但要到 2014 年晚些时候才能使用。

    【讨论】:

    • 谢谢马克......我已经开始沿着你提到的创建(2)个单独的结果集的道路; 1 包含已删除和未删除的记录(使用 ShowDeleted=true)和 1 仅包含未删除的记录(使用 ShowDeleted=false)。获得这些结果集后,我将它们进行比较以过滤掉“已删除”的记录。
    • 感谢您提供有关包含 DELETED() 标量函数的 ADS 12 功能的信息...这将非常有用。
    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    相关资源
    最近更新 更多