由于 ADP 只有一个数据库连接,没有象 Access mdb 那样的本地表和链接表,因此只有使用一个 ADO 连接来连接一个本地的 Access mdb 数据库存储本地的配置信息。为什么使用 ADO 呢?主要是因为 ADP 本身就是使用 ADO 技术,我们开发应用程序没有必要再使用一个 DAO 对象来增加机器的负担。假设,我们将这个 Access mdb 数据库文件命名为 Config.accdb (因为是用 Access 2007 缘故),在这个数据库中我们可以存储 ADP 中用到的 SQL Server 数据库的连接信息,如服务器实例及连接端口、数据库名称、登录ID、以及登录密码,当然还可以存储 ADP 应用程序使用者的信息,例如应用程序的名称、授权应用单位、使用者的登录用户名,还有就是用它来存储应用程序功能区的 XML,等等。

access清空表的数据 access清空窗体数据_access清空表的数据

access清空表的数据 access清空窗体数据_用户登录_02

图1 ADP 用户登录窗体流程图

从图中,我们看出应用程序最少包括一个用户登录窗体、一个项目配置窗体、一个配置数据库、一个项目对象(自定义的类)、一个应用程序的功能区。ADP 的数据库连接随登录窗体打开而打开,随登录窗体关闭而断开,这样就保证了 ADP 在未打开的情况下不包含数据库连接,从而保证了数据库的数据库安全。同时,由于是用户登录后才加载功能区,这样可以做到不同的用户可以拥有不同的功能区,从而实现一部分(简单)应用程序权限控制。

当隐藏用户登录窗体后,程序的控制权就交给了应用程序首页窗体和功能区。一旦,将 ADP 关闭,就会自动关闭隐藏的用户登录窗体,这时,在窗体的关闭事件处理程序中就会执行断开 ADP 的数据库连接,同时清空 ADP 的 BaseConnectionString,以保证关闭后的 ADP 文件不包含数据库连接字符串,保证数据库的数据安全,同时为下一次打开 ADP 应用程序时能顺利的调用用户登录窗体,而不是出现默认的 ADP 数据库连接对话框。