资源预览内容
第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
第9页 / 共23页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第 17 章更新数据信息修改系统o数据库中的数据是经常改变的,如何将通过系统将改变后的数据 保存到数据库中呢?本章通过向“人力资源管理系统”修改员工 培训信息模块介绍修改数据的具体方法和步骤,介绍了基于三层 体系架构的信息修改模块的分析、设计和实现,并描述了开发过 程中常见的问题及解决方法。o o系统分析o 数据库分析和设计o 系统设计o 运行系统o 在我的WinForm应用中应用本系统o 开发过程常见问题及解决o系统分析o 数据库分析和设计o 系统设计o 运行系统o 在我的WinForm应用中应用本系统o 开发过程常见问题及解决17.1 系统分析o修改数据库表中的记录也是一种常见的操作,“人力资源管理系 统”的主要功能模块中都涉及到修改数据库表中记录的操作有很 多。如:n员工管理模块中修改员工信息和删除员工信息;n考评管理模块中修改员工的考评信息和删除员工的考评信息;n员工调动管理模块中修改员工的调动信息和删除员工的调动信息;n培训管理模块中修改员工培训的记录信息和员工培训的记录信息;n奖惩管理模块中修改员工的奖惩信息和删除员工的奖惩信息等。o上面这些修改信息的操作基本上是类似的,在三层体系结构中, 表示层提供修改信息的操作界面,业务逻辑层实现具体的修改业 务逻辑,数据访问层负责把修改过的数据更新到数据库表中。本 章以修改员工培训信息为例来介绍如何修改数据库中员工培训信 息记录以及如何删除培训记录的编码过程。o系统分析o 数据库分析和设计o 系统设计o 运行系统o 在我的WinForm应用中应用本系统o 开发过程常见问题及解决17.2 数据库分析和设计o修改员工培训信息到数据库中涉及到四个表:一个是存放员工培训信息 的员工培训信息表,其他三个是员工信息表和其有外键约束的员工职位 表和员工部门表。数据库设计如下:o员工培训表(TrainInfo)是记录员工的培训信息,其中Tid是主键,Eid 是外键约束。员工信息表(EmployInfo)部门表和职位表在第16章已经 列出, 在员工信息表中,字段Sid和Pid的值来自职位表和部门表中的字 段。员工培训表(TrainInfo)结构如下:列名数据类型是否空描述 TidIntNo标识列, 编号 EidVarchar(1 0)No员工编号DateVarchar(5 0)Yes日期CourseVarchar(2 0)No培训课程RemarksVarchar(2 00)Yes备注o由于培训信息表中存储的是员工编号,为了能显示出培训员工的姓名,职 位和所属部门,需要在多个表中进行LINQ查询。目前LINQ不支持返回多表 联合查询的结果,对于这个情况的一种解决办法是创建一个视图,视图里 面包含需要的所有数据列,然后在视图里面查询,返回视图查询的结果。 所以我们下面创建一个名为TrainEmployeeView的视图。o 打开SQL Server 2008或2005,或在Visual Studio 2008中打开服务器资源管理器,展开数据库Hrmanage下的视图项,在视图上单击鼠标右键创建新视图。o 添加所用到的表和所需的字段,保存即可得到所需要的视图。o系统分析o 数据库分析和设计o 系统设计o 运行系统o 在我的WinForm应用中应用本系统o 开发过程常见问题及解决17.3 系统设计o在第15章中给出了系统的总体设计,本节在第15章的基础上,使 用LINQ to SQL实现从视图中查询信息、修改培训表中记录和删除 表中的记录等操作。分别在HrDAL、HrBLL表示数据访问层和业务 逻辑层添加相应的编辑和删除表中记录的方法,在表示层实现操 作界面。下面介绍代码的编写。1. 在DataLinq层o在DataLinq层中打开设计好的HrDataLinq.dbml,把新建的视图 TrainEmployeeView从服务器资源管理器中拖放到dbml设计器中, 单击保存,自动重新生成DataContext类,完成视图对应视图的创 建和映射。如下图。2. 在HrDAL数据访问层o在HrDAL数据访问层HrDAL.cs文件中新建类DALTrainInfo 用于管 理对TrainInfo表操作的方法:SelectRecordAll方法用于查询员 工的培训信息;UpdateRecord方法用于更新编辑后的记录到数据 库;DeleteRecordByTID方法是通过培训编号删除对应的一条记录 。代码如下。o(1)用于查询员工的培训信息SelectRecordAll方法(代码17-1- 1.txt)o(2)用于更新编辑后的记录到数据库UpdateRecord方法(代码17 -1-2.txt)o(3)通过培训编号删除对应的一条记录的DeleteRecordByTID方 法(代码17-1-3.txt)3. 在业务逻辑层o在业务逻辑层,分别添加与数据访问层中的方法的对应方法: SelectRecordAll方法、UpdateRecord方法和DeleteRecordByTID 方法分别实现查询视图、编辑记录和删除记录的业务逻辑。在项 目HrBLL中HrBLL.cs文件中添加一个BLLTrainInfo类和三个方法, 代码如下:4. 在表示层o在表示层:设计BrowseTrainInfo窗体和updateTrainInfo窗体用 来显示员工培训记录,编辑员工培训信息和删除记录。窗体如下 :o在DataGridView中选择一行后单击编辑按钮后编辑选中的那行记 录,属性设置见源代码,编辑窗口如下:o5. 表示层BrowseTrainInfo窗体中代码如下(17-3-1.txt)o单击编辑按钮执行的代码如下(17-3-2.txt):o单击刷新按钮执行的代码如下(17-3-3.txt):o6. 表示层编辑员工培训信息窗体updateTrain中的代码如下:o系统分析o 数据库分析和设计o 系统设计o 运行系统o 在我的WinForm应用中应用本系统o 开发过程常见问题及解决17.4 运行系统o在Program.cs中更改浏览培训信息窗体为启动窗体,运行程序出 现如下界面,o选择某行后单击编辑按钮,出现编辑窗口,可以进行培训信息的 更改,运行结果如下:o选择某行后单击删除按钮,可以删除一条员工培训记录。o系统分析o 数据库分析和设计o 系统设计o 运行系统o 在我的WinForm应用中应用本系统o 开发过程常见问题及解决17.5 在我的Windows窗体应用程序中应用 本系统o本章编写信息修改系统模块包括浏览员工培训信息、编辑培训信 息和删除培训记录三个功能,添加在数据访问层和业务逻辑层的 代码可以直接用在整个“人力资源管理系统”项目中,表示层界 面部分要稍做修改以适合项目的整体要求。 o系统分析o 数据库分析和设计o 系统设计o 运行系统o 在我的WinForm应用中应用本系统o 开发过程常见问题及解决17.6 开发过程常见问题及解决o开发过程中经常出现的问题和解决方案如下:o1. 使用LINQ对多个有关系的表进行查询,返回的结果集是两个以 上表中内容时,返回的结果类型是匿名的List类型转为Table类型 的问题。解决方法有多种,如下:o(1)自定义与返回类型相同结构的类来实现转换o(2)使用System.Func委托o(3)使用存储过程或视图(本章使用的是这种方式视图)o2. 一个窗体中的数据传递到另一个窗体的中使用,有多种方法, 本章介绍了通过定义一个构造函数来接收窗体传来的数据一种方 法。如:在浏览员工培训信息的表格中选择某行后单击编辑按钮 ,出现编辑窗口,把选择行的值传递到编辑窗口的做法如下。o在浏览窗口的编辑按钮单击事件处理程序中添加代码,显示编辑窗 口,并使用有参数的构造函数。o01 dr = this.dataGridView1.RowsdataGridView1.CurrentRow.Index;o02 updateTrain updateTrainInfo = new updateTrain(dr);o03 updateTrainInfo.ShowDialog();o在编辑窗口定义对应的有参数的构造函数,,接收传来的数据。o01 public updateTrain(DataGridViewRow dr)o02 /添加的构造函数o03 InitializeComponent();/初始化控件o04 /根据dr参数的值对控件属性赋值o05 textBoxTid.Text = dr.Cells0.Value.ToString(); /对Tid赋值o06 textBoxName.Text = dr.Cells1.Value.ToString(); /对Name赋值o07 dateTimePicker1.Text = dr.Cells5.Value.ToString();o08 textBoxCourse.Text = dr.Cells6.Value.ToString();o09 textBoxRemarks.Text = dr.Cells7.Value.ToString();o10 textBoxEID.Text = dr.Cells8.Value.ToString(); /这个文本框是隐藏的o11 oSee you later!
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号