procedure TDMServerDB.DataModuleCreate(Sender: TObject);
begin
// 创建存放系统参数(三个成绩占比和数据库联接参数)的文件
IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Stu.ini');
ADOConnection.Close;
DataSourceStudent.DataSet:=Nil; // 启动时,先取消数据组件与学生表的联系
ADOConnection.ConnectionString:='Provider=SQLOLEDB.1;'
+'Password='+IniFile.ReadString('Database', 'Password', '88297142')
+';Persist Security Info=True;'
+'User ID='+IniFile.ReadString('Database', 'UserID', 'stu')
+';Initial Catalog=StuAchievement;'
+'Data Source='+IniFile.ReadString('Database', 'DataServer', 'JINLQWINSERVER2');
ADOConnection.Open; // 连接数据库
ADODataSetRoleRight.Filtered := True; // 系统中需要使用过滤
end;
程序结束时,需要断开与数据库的连接及释放IniFile变量占用的空间,所以在数据模块的On Destroy事件中断开与数据库的连接,如下所示。
procedure TDMServerDB.DataModuleDestroy(Sender: TObject);
begin
ADOConnection.Close;
IniFile.Free;
end;
将放入应用程序中使用的与数据库的有关组件放入数据模块、设置必要的属性和编写必要的事件代码后,通过存盘(或另存为)的方法保存,并将该数据模块的单元名设置为UnitDB。
应用程序中的其他模块中需要使用数据模块中的这些对象,只需在相应单元文件的implementation后,使用:
uses UnitDB;
引用该数据模块即可。
(5)主细表联接
因系统数据库中许多表之间存在主外键关系,如角色权限表RoleRight(细表)中的RoleID是外键,依赖于角色表Role (主表),因此需要在主细表之间通过关键字RoleID进行联接。这里以RoleRight(细表)与Role (主表)为例说明联接过程。
1) 进入数据模块,按表14设置好RoleRight、Role表的属性后,选中细表RoleRight,在对象属性窗口中有一DataSource属性,用于设置指向主表的DataSource对象,因此下拉该属性列表框,从中选择主表的DataSource对象DataSourceRole。
2) 设置主细表联接(Link)的字段。选择RoleRight表的MasterFields属性,属性右边出现“ ”按钮,单击该按钮,出现设置主细表联接字段编辑器,如图5所示。

图5 主细表联接字段编辑器
3) 因主细表要通过RoleID字段进行联接,故分别在主表(Master)和细表(Detail)的字段表中选中RoleID,中间的“Add”按钮有效。
4) 单击“Add”按钮,在“Joined Fields”列表框中出现RoleID->RoleID,表示按RoleID字段进行联接。
5) 单击“OK”按钮,完成主细表的联接。同时自动设置了IndexFieldNames属性的值。
完成以上联接后,当主表的记录移动时,细表将根据联接条件自动过滤出外键值与主表主键值相同的记录。
6 总结本文介绍了开发数据库应用系统必须要具备的基础知识,从用户需求分析、数据库设计、系统总体框架设计、系统公用模块设计等四个方面,介绍了开发数据库应用系统的整体思路及其要点,并定义了必要的常量、数据类型和变量,提供了5个必要的函数和过程为今后的模块设计打好基础。本文只是开发数据库应用系统的第一步,但也是必不可少的关键一步,只有设计思路正确,才能既好又快地开发数据库应用系统。上面提供的函数和过程都是通用的,在其他的基于Delphi的应用程序中都能方便地使用,并大大加快应用程序的开发速度。
|