当通过 DAO 或 Data 控件使用 Jet 访问 ODBC 数据库时,Microsoft Jet 数据库引擎及其连接管理例程就被自动调用。Jet 总是试图只打开尽可能少的连接,在可能的情况下,它总是尽量共享已有的连接。
一般来说,Jet 数据库引擎总是尽量共享应用程序已经建立的连接或是对它作高速缓存。首要的原则是,如果请求的数据源名称 (DSN) 被多个 OpenDatabase 调用所引用,那么 DAO 和 Jet 就试图重新使用这个连接。也就是说,如果对某一个特定的 DSN 已经打开了一个连接,只要 Jet 认为可以共享已存在的连接,它就不会再打开另外一个连接。当对一个 DAO Database 对象使用 Close 方法时,如果某个连接是特定 DSN 的最后一个连接,那么 Jet 并不会马上关闭它— 而是对它进行高速缓存以防可能重新建立这个连接。
使用 DAO 和 Jet 来访问远程 ODBC 数据源有两种基本的方式。两种方式都要对以下数据源调用 OpenDatabase 方法:
每一种技术都有其优点和缺点,但是对 ODBC DSN 使用 OpenDatabase 方法时,要求 Jet 下载较大量的关于目标数据库的、类似于数据定义语言 (DDL) 的描述信息。由于这种信息没有进行高速缓存,所以每当打开 Database 对象时,DDL 均会重复读取操作。这是 Jet 尽量将连接存放在高速缓存区的原因之一─ 不必重复这一过程。
将一个 ODBC 数据源附属或链接到一个表时,总是要对 Jet 数据库中的 DDL 信息作高速缓存,所以如果连接已经建立或者数据库已经打开,就用不着进行 DDL 查询。这在打开连接或创建 DAO Database 对象时可以极大地提高性能。
详细信息 关于连接策略的详细信息,请参阅本章后面的“对 DAO ODBC 与 Jet连接的高速缓存”。