【发布时间】:2021-10-18 16:11:32
【问题描述】:
使用 C#、ODBC 和 Jet 4.0 引擎来处理(旧的)Access 数据库。该任务要求我不使用 DAO。
遗憾的是,Microsoft Jet 4.0 数据库引擎不支持“RENAME”关键字。以下所有内容都会引发异常:
- 将表旧名称重命名为新名称;
- 将旧名称重命名为新名称;
- ALTER TABLE old_name 重命名为 new_name;
但以下语法确实有效:
SELECT * INTO new_name FROM old_name;
问题是没有复制主键。
有没有办法创建一个表的副本,并在副本中保留哪些字段是主键?
【问题讨论】:
-
呃... 任务要求我不使用DAO,为什么? DAO 与 Access 数据库引擎一起提供,因此如果您可以进行 ODBC 连接,则通常可以使用 DAO,而 Access 对 DDL 的支持有限,对于许多操作都需要 DAO。
-
谢谢@ErikA。这很可能是一个糟糕的要求!我们的目标是创建一个通用接口,使我们能够同时支持 Access 和其他数据库类型,如 MySQL。这里的高级开发人员已经设定了我们根本不使用 DAO 的要求。因此,如果可能的话,我会尝试在原始 SQL 和 ODBC 驱动程序中执行此操作。我现在可以使用 ODBC 在原始 SQL 中做几乎所有事情。如果没有 DAO,这项特别的任务真的是不可能的,那么了解这一点将非常有价值!