1.2数据访问层

数据访问层是为了统一数据库的访问接口,它实现了对数据表的常见操作,如增加、修改、删除、查询。有了数据访问层,程序员可以把主要精力放在业务逻辑的实现上。通过数据访问层,我们可以在不修改业务逻辑层的情况下,实现数据库平台的切换。如果有一天,我们的系统需要从C/S结构转化为三层结构(多了应用服务器层),也可能通过修改数据访问层来实现。

1.2.1数据访问层的类图


备注:

1)一般而言,我们的业务类是派生于EntityClass,例如上图中的UserPower类,如果是单据则派生于BillClass,例如OrderManager类。

2)通过EntityClass,我们可以统一数据存取方式,简化业务逻辑的实现代码,让开发人员把更多的时间放在业务逻辑的设计上。

3)通过实体类,我们可以让程序使用不同的数据库平台(Access 、SQL Server、Oracle),但业务类不用做任何修改。

 

1.2.2 DataTableExt介绍

DataTableExt主要是在DataTable的基础上,添加取以下功能:

1)提供了数据导航功能。主要有MoveFirst、MovePrevious、MoveNext、MoveLast这几个方法,而且可以记录DataTable的当前行(CurRow)。


2)为简化Table操作,提供了行数(RowCount)、当前行索引(CurRowIndex)、当前行(CurRow)这几个属性。为了方便用控制,DataTableExt还提供了焦点行变化事件(RowIndexChange),例如实体类中利用行变化事件读取子表的内容。


RowIndexChange事件的方法原形如下:


3)提供了数据操纵功能。让用户可以增加(AddRecord)、修改(EditRecord)和删除(DeleteRecord)记录、取消修改(CancelEdit)、结束本次修改(EndEdit),执行这些动作后系统会更新当前行(CurRow)。


4)记录DataTable的父表和子表。根据这两个属性,我们可以处理很多事情,例如当焦点行发生变化时,可以读取子表的内容,在子表增加新行时自动把父表的主键Copy到子表。


调用范例:


5)生成当前表的记录级权限、查询语句,并且打开数据表后设计数据表的主键。


6)通过设置自增长字段属性,系统在增加新行时,可以自动产生字段值。


在默认情况下,只需要设置AutoIncFieldName就可以了,因为其它属性都有默认值。下图是使用自增长字段的之后的范例:


增长步长为10时的范例: