【问题标题】:Connect an SQL client to an MS Access database (instead of using MS Access SQL text editor)将 SQL 客户端连接到 MS Access 数据库(而不是使用 MS Access SQL 文本编辑器)
【发布时间】:2022-12-05 12:37:27
【问题描述】:

有没有办法连接 SQL 客户端来查询 MS Access 数据库?

例如,使用基于 Java 的 SQL 客户端(如 SQuirreL SQL),使用 JDBC 连接来查询 .accdb 文件中的表。


用例:

具有多个与 Query Designer UI 不兼容的子查询的复杂 SQL 查询。

想要使用 SQL 客户端的原因:

使用 SQL 客户端比在 Access SQL 窗口中编写 SQL 更容易。

Access SQL 窗口非常有限:

  • 文本很小/难以阅读并且不是等宽的
  • 没有任何 linting 功能、自动更正等。
  • 当您关闭并重新打开查询时,SQL 间距会丢失。
  • 没有查找和替换功能。
  • 更多限制。

因此,我希望找到一种方法将像 SQuirrel 这样的 SQL 客户端连接到 Access 数据库。

【问题讨论】:

    标签: ms-access jdbc sqlclient squirrel-sql


    【解决方案1】:

    看起来答案是肯定的。

    在 SQuirreL 中,我使用了一个名为 CDATA Access JDBC Driver 的 JDBC 产品:https://www.cdata.com/drivers/access/jdbc/download/

    • 它是付费产品,但它有免费试用选项。
    • 我安装了驱动程序(通过 .exe)并按照此处 SQuirreL 中的使用说明进行操作:Connect to Access Data in Squirrel SQL Client
      • 说明似乎有些不完整,或者至少是过时的。但是有一点读懂字里行间,我能够让它工作。
      • 提示:不要使用这个 URL:jdbc:access。请改用完整的 URL:jdbc:access:DataSource=C:/MyDB.accdb;
    • 相关:SQuirreL 4.5.1 wants a newer version of JVM, even though latest JDK installed
    • 最初,我担心 CData 公司的合法性。因为我以前没有遇到过他们。但我看到它们列在IBM Partners page 上。所以我认为他们可能是安全的。

    结果:

    我可以使用 SQuirreL SQL 客户端查询本地 .accdb MS Access 数据库。


    SQL语法注意事项:

    语法似乎是通用 SQL,例如 SQL-92 或类似的东西。它不使用本机 MS Access 语法。

    例如,这将直接在 MS Access 中工作:

    where
        ucase(omi.p_commod) like '*MARBL*'
        or ucase(omi.s_commod) like '*MARBL*'
    

    但在 SQuirrel 中,不支持星号 * 通配符。 UCASE 函数也不是。相反,使用百分比符号 % 通配符。并使用 UPPER 代替 UCASE。

    where
           upper(omi.p_commod) like '%MARBL%'
        or upper(omi.s_commod) like '%MARBL%'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      相关资源
      最近更新 更多