gpt4 book ai didi

ms-access - 如何通过 ODBC 查询名称带有问号的 MS Access 列?

转载 作者:行者123 更新时间:2023-12-03 06:49:39 25 4
gpt4 key购买 nike

我有一个 MS Access 数据库(记录为 Access 2002)。它有一个名称包含问号的列,例如表“Users”,其中包含“uid”和“isAdmin?”列。我需要通过 ODBC 连接到此数据库,并按以下几行查询此列:

select [uid], [isAdmin?] from Users order by [isAdmin?];

如何转义列名中的问号,以便 MS Access ODBC 驱动程序不认为它是查询参数?该查询不使用任何参数,因此如果我完全禁用它们就可以了。

一些限制:

  • 我无法轻松更改列名称。
  • 我无法轻松使用 ODBC 以外的其他方式进行连接,尽管如果我无法让 ODBC 正常工作,这可能是我的后备计划。
  • 我不能只是说select * from Users——它仍然会因为 order by 而感到窒息(这在实际查询中很复杂,所以确实需要在 SQL 中完成)。

我尝试过但不起作用的事情:

  • select [uid], '[isAdmin?]' from Users; -- 这使得第二列成为字符串“[isAdmin?]”
  • 从用户中选择 [uid]、['isAdmin?'];
  • 从用户中选择 [uid]、[isAdmin\?];
  • select [uid], [isAdmin\?] {escape '\'} from Users; -- 任何其他转义字符也不起作用。
  • 从用户中选择 [uid], { [isAdmin?] };

编辑:我应该澄清一下,我根本无法轻松地更改数据库,除非通过 ODBC(或 ADO 或 DAO 或其他方式,但这会有点棘手,并且那时我可以通过这些运行查询)。

最佳答案

这可能看起来是一个狡猾的解决方案,但听起来您没有在解决问题方面得到任何合理的帮助。

您对 MDB 结构有写权限吗?您有独立的 Access 副本吗?

如果是这样,请创建一个新的空白 MDB 文件(完成后您将丢弃它)。从新的 MDB 创建一个链接表,并使用它来编写一个已保存的 QueryDef,该查询定义了该字段的别名。然后使用 DoCmd.TransferDatabase 将其从临时 MDB 导出到真实 MDB 中。

这假设您拥有对通过 ODBC 从应用程序 Access 的 MDB 的 SMB 文件系统 Access 权限。

另一种选择是,由于在 MDB 中获取具有适当别名的 View 是一次性的,因此可以使用 OLEDB 来完成此操作,假设您具有对 MDB 的 OLEDB Access 权限。

关于ms-access - 如何通过 ODBC 查询名称带有问号的 MS Access 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1409610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com