【问题标题】: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/。
结果:
我可以使用 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%'