基于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的结构图