




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Windows界面设计,安徽机电职业技术学院信息工程系 汪学文(wxwOOP) 课程网站: 2012年12月,2,任务6:将员工信息保存到数据库,学习目标: 进一步使用SQL Server 2005 Express数据库。 设计自定义对话框窗体。 将comboBox(下拉列表)绑定到数据表。 将用户输入的数据保存到数据库,本任务在任务5“使用数据库”基础上继续进行。,3,6.1 在“员工列表”窗体中调用“增加新员工”窗体,在“员工列表”窗体中,单击“添加员工”按钮,启动“增加新员工”窗体。,4,“增加新员工”窗体作为对话框调用,我们希望: 如果用户点击“新建”完成增加新员工,那么返回时,需要刷
2、新员工列表。 如果用户点击“取消”,由于数据没有变化,不需要刷新员工列表。 因此,需要“增加新员工”窗体作为自定义对话框,在成功时返回DialogResult.OK,否则返回DialogResult.Cancel。,private void btnNewEmployee_Click(object sender, EventArgs e) FrmNewEmployee frmEmp = new FrmNewEmployee(); if (DialogResult.OK = frmEmp.ShowDialog() dsEmployee.Clear(); / 清除内存数据集中的数据 BindGrid
3、(); / 重新绑定数据 ,5,设计自定义对话框窗体,如上所述,需要将“增加新员工”窗体设置成自定义对话框。 “新建”按钮的DialogResult属性设置为“OK” “取消”按钮的DialogResult属性设置为“Cancel” 这时, “新建” 和“取消”按钮的Click事件中的this.Close()语句就可以去掉了。 还可以设置窗体的如下属性: AcceptButton:btnOK-按回车相当于按些按钮 CancelButton:btnCancel-按Esc键相当于按此按钮,6,6.2 将部门列表绑定到ComboBox控件,拖放SqlConnection控件到“添加新员工”窗体,命名
4、为cnBlueHill。 设置ConnectionString属性为数据库 拖放SqlDataAdapter控件到窗体,命名为daDepart。 设置SelectCommand的Connection属性为cnBlueHill 设置SelectCommand的CommandText属性为:SELECT DeptID, DeptName FROM tblDepartment 以上可以通过“数据适配器配置向导”来完成 拖放DataSet控件到“添加新员工”窗体,命名为dsDepart。注意要选择“非类型化数据集”,7,6.2 将部门列表绑定到ComboBox控件,在FrmNewEmployee_Lo
5、ad事件中编写以下代码:,private void FrmNewEmployee_Load(object sender, EventArgs e) try / 将部门列表数据填充内存数据集的Depart表 daDepart.Fill(dsDepart, Depart); / 设置部门下拉列表框的数据源为上述Depart表 cbDepart.DataSource = dsDepart.TablesDepart; / 设置部门下拉列表框的显示字段为DeptName cbDepart.DisplayMember = DeptName; / 设置部门下拉列表框的值字段为DeptID cbDepart.
6、ValueMember = DeptID; catch MessageBox.Show(读取部门列表数据出错,可能无法添加员工。, 错误, MessageBoxButtons.OK, MessageBoxIcon.Error); return; ,8,6.3 将员工信息保存到数据库,保存数据主要用到数据库的Insert操作。 拖放SqlCommand控件到窗体上 设置Connection属性为cnBlueHill 设置CommandText属性为:,INSERT INTO tblEmployee(Name, LoginName, Password, Birthday, Email, DeptI
7、D, BasicSalary, Title, Telephone, OnboardDate, SelfIntro, VacationRemain, EmployeeLevel, PhotoImage) VALUES (Name, LoginName, Password, Birthday, Email, DeptID, BasicSalary, Title, Telephone, OnboardDate, SelfIntro,VacationRemain, EmployeeLevel,PhotoImage),为什么需要保存OnBoardDate等列的数据? 因为这些列被设计成非空列(不允许空)
8、,9,执行插入操作,由此可见,将员工信息保存到数据库需要进行以下几步操作: 打开数据库连接 给参数集合(Parameters对象)分别赋值 执行Command对象的ExecuteNonQuery方法 关闭数据库连接,10,Code 1/5:新建时,要求窗体进行验证,private void btkOK_Click(object sender, EventArgs e) / 激发窗体内所有控件进行验证 / 如果验证不通过,不退出,继续要求输入 if (!this.ValidateChildren() / 设为None,窗体将不会关闭 this.DialogResult = DialogResul
9、t.None; return; ,11,Code 2/5:给参数对象赋值,/ 打开数据库连接,并给参数对象赋值 cmdInsertEmp.Connection.Open(); cmdInsertEmp.ParametersName.Value = tbName.Text; cmdInsertEmp.ParametersLoginName.Value = tbLogin.Text; cmdInsertEmp.ParametersPassword.Value = tbPassword.Text; cmdInsertEmp.ParametersBirthday.Value = Convert.ToD
10、ateTime(tbBirthday.Text); cmdInsertEmp.ParametersEmail.Value = tbEmail.Text; cmdInsertEmp.ParametersDeptid.Value = cbDepart.SelectedValue; cmdInsertEmp.ParametersTitle.Value = tbTitle.Text; cmdInsertEmp.ParametersEmployeeLevel.Value = numLevel.Value; cmdInsertEmp.ParametersBasicSalary.Value = numSal
11、ary.Value; cmdInsertEmp.ParametersTelephone.Value = tbPhone.Text; cmdInsertEmp.ParametersSelfINtro.Value = tbSelfIntro.Text; cmdInsertEmp.ParametersOnboardDate.Value = DateTime.Now; cmdInsertEmp.ParametersVacationRemain.Value = 0; / 暂且不对照片列进行处理,设为空值,如果需要处理,用下页的代码代替 cmdInsertEmp.ParametersPhotoImage.
12、Value = Convert.DBNull;,12,*Code 3/5:将照片信息存入参数,/ 处理照片数据 ImageConverter ic = new ImageConverter(); byte photoByteArray = ic.ConvertTo(pbPhoto.Image, typeof(byte) as byte; if (photoByteArray != null) cmdInsertEmp.ParametersPhotoImage.Value = photoByteArray; else cmdInsertEmp.ParametersPhotoImage.Value
13、 = Convert.DBNull; ,使用对象浏览器,了解ImageConvert类及其ConvertTo方法。,13,*Code 4/5:新建时,要求窗体进行验证,try cmdInsertEmp.ExecuteNonQuery(); MessageBox.Show(成功修改员工信息。, 成功, MessageBoxButtons.OK, MessageBoxIcon.Information); catch (System.Data.SqlClient.SqlException sqlex) /Sql Server错误号代表唯一约束冲突,说明登录名重复。 if (sqlex.Number
14、= 2627) MessageBox.Show(登录名不能重复。, 错误, MessageBoxButtons.OK, MessageBoxIcon.Error); else MessageBox.Show(读取数据库错误。, 错误, MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.None; ,怎样做到,登录名重复时,会引发数据库唯一约束?,14,*Code 5/5:新建时,要求窗体进行验证,catch MessageBox.Show(创建员工出错,请检查输入数据格式是否正确。, 错误, MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.None; finally cmdInsertEmp.Connection.Close(); ,15,6.4 回顾,进一步熟悉自定义对话框的设计; 掌握将数据库查询结果绑定到列表控件(如ComboBox或DataGridView); 进一步掌握Connection对象、DataAdapter
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉语言毕业论文
- 文化传媒专业毕业论文
- 旅游管理系毕业论文选题
- 毕业论文 软件专业
- 2025年度企业内部员工职业晋升与技能提升服务合同
- 2025年度全球影视作品版权授权合作协议
- 护理实习毕业论文
- 2025年专业医疗机构物业维护及医疗废物规范化处理安全协议
- 2025年五星级酒店大堂豪华地板升级更换工程合同
- 2025年绿色环保纸板产品线上销售代理合作协议
- 【社会层面】社会主义核心价值观
- 变更风险识别、评估记录表参考模板范本
- 2022年基本公共卫生服务项目宣传工作计划
- 癫痫病人的护理查房ppt课件(PPT 24页)
- DB45T2053-2019 重质碳酸钙单位产品能源消耗限额
- 红金简约风教师退休欢送会PPT通用模板
- 水准点复测记录(自动计算表)
- 有机热载体锅炉安装工程施工方案完整
- 处方点评与案例分析
- 《放射物理与防护》第三章
- 任务1汽车配件识别
评论
0/150
提交评论