日期:2008-12-14  浏览次数:20431 次

基于cs\bs架构的信息管理系统中,让软件人员感到头疼,工作量繁多而又是必须作的项目:基于数据库的查询,添加,更新,删除,真的是一场噩梦,因为繁多的字段,就算使用分层次的关系对象映射,也是一场很大的工作。

在我们最近的项目中,就有一个这样的例子,它是一个学生信息的管理系统,包括了奖学金,勤工助学,贷款,奖惩等各方面的学生信息维护。针对整个系统查询多,添加多,字段繁杂的特点(光贷款的字段就有多达70多个,主要适用于银行上报,学校内部管理维护),用一般的开发方式已经不能满足需要。针对整个系统的要求,我们开发了一个DBForm的数据库控制模块,通过同界面一定的设置相配合,实现了字段任意添加,实际总代码行数不会超过20-30行的目标(根据Join标的数据而定)

一段用于查询的代码实际使用如下

下面的这些代码是放置在窗体初始化的时候的

myDBForm = new DBForm(FormType.WinForm,"Smis_AdminLogin","UserList");

myDBForm.AddJoinInfo("DepartmentID","","DepartmentID","CodeInstitute");

myDBForm.AddJoinInfo("GroupID","","GroupID","CodeAdminGroup");





myDBForm.IniDBForm();


下面这些用于具体的查询操作:

if (NewQuery)

{

myDBForm.NewQueryInit(); //新查询所需要做的准备工作

myDBForm.AddQueryContainer(this.gbxQuery);

//加入放置修改控件集合的容器



}



string SelectedColumn = @"Smis_AdminLogin.*,CodeInstitute.DepartmentName,CodeAdminGroup.GroupName";





myDBForm.ExecuteQuery(SelectedColumn,"");

查询出来的数据就放置在DBForm的QueryDBData属性中,可以直接绑定到想要查看的数据列

如果要执行添加/删除操作,DBForm的初始化应该加入下列代码


myDBForm.AddModifyContainer(gbxModify);//加入放置修改控件集合的容器

myDBForm.BuildModifyCommands("Smis_AdminLogin","LoginName");

然后是具体的数据库操作:

object AdminID = myDBForm.ExecuteInsert();

myDBForm.ExecuteDelete(CurrentUser.UserEntity.LoginName);

myDBForm.ExecuteUpdate(CurrentUser.UserEntity.LoginName);





上面3条语句分别完成了对数据库的插入,更新,删除工作



通过DBForm的使用,大大简化了我们系统数据库方面的开发,对于进行数据操作时的业务规划问题,我们采用了常见的关系/对象映射模型,不过映射的都是数据库的小子集,这些是日常工作的核心部分,并且变动的几率不大。



附上DBForm的结构图