版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第11章 自定义员工请 假审批工作流,大连理工大学电子音像出版社出版,第11章 自定义员工请假审批工作流,目的和要求:,掌握视图的定义与使用 掌握触发器的定义与使用 掌握 ADO.NET事务的定义与使用,重点和难点:,触发器的定义与使用 ADO.NET事务的定义与使用,模块业务描述,第一级审批权限: 如果请假10天以上, 由员工提交请假申报,经教研室主任批准后,分别经系主任、副院长、院长逐级审批后,最后由董事长批准终止流程。 第二级审批权限:如果请假7-10天, 由员工提交请假申报,经教研室主任批准后,分别由系主任、副院长逐级审批, 最后由院长审批终止流程。 第三级审批权限:如果请假3-7天,
2、 由员工提交请假申报,经教研室主任批准后,再系主任审批,最后由副院长审批终止流程。 第四级审批权限: 如果请假1-3天, 由员工提交请假申报,教研室主任批准,呈送经系主任审批终止流程。 第五级审批权限: 如果请假1天,由员工提交请假申报,教研室主任批准终止流程。,模块 UML图设计,模块界面设计,基础知识,视图定义 视图是一张虚拟表,它数据来源于基本表。优点便于数据的操作,能将几张表的中集中起来,可以简化操作 示例一: CREATE VIEW view_name AS select_statement 二例二: 视图示例一: CREATE VIEW SELECTEMPDEP AS select
3、 EmployeeID,EmployeeName,DepartmentName from dbo.Employee E,dbo.Department D where D.DepID=E.DepartmentID,触发器定义,触发器是一种特殊的存储过程,它不能显示地被调用,SQL Server 允许为 INSERT、UPDATE、DELETE 创建触发器,当在表(视图)中插入、更新、删除记录时,触发一个或一系列 T-SQL 语句。 创建触发器通常有两种方式, 一种是使用企业管理器创建触发器, 另一种是使用T-SQL代码创建触发器,语法格式,语法格式为: CREATE TRIGGER 触发器名称
4、ON 表名 FOR INSERT、UPDATE 或 DELETE AS T-SQL 语句,触发器示例一 CREATE TRIGGER dbo.InsertLR ON dbo.LeaveRecord FOR INSERT AS BEGIN SET NOCOUNT ON; declare RecordID int declare EmpID int select RecordID=RecordID,EmpID=EmpID from inserted INSERT INTO dbo.LEAVE_CHECK(leave_bill_id,leave_proposerid,check_employee_l
5、evel,check_type) values(RecordID,EmpID,5,1) END,ADO.NET事务,事务专门用于操作数据库时,保持数据一致性,如:学生表与班级表,每增加一名学生,便要在班级表的总人数列上增加一人。如果学生有一名退学,便要在班级表总人数列中减去一人。 为了保持两张表数据的一致性。可以使用事务对其进行处理。使用事务处理要用到名称空间。,SqlTransaction mytrans; / mytrans为事务类对象 SqlCommand comm = conn.CreateCommand(); mytrans = conn.BeginTransaction();/连接
6、类对象的BeginTransaction()方法 comm.Transaction = mytrans;/ 命令类的Transaction属性,UML对象时序图讲解,数据库共用类 :方法一. ExecuteNonQuery,public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); using (SqlConnecti
7、on conn = new SqlConnection(connectionString) PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; ,方法二. ExecuteNonQuery,public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText,
8、params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; ,方法三. PrepareCommand,private static void PrepareCommand(SqlCommand cmd, Sq
9、lConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter cmdParms) if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null) fore
10、ach (SqlParameter parm in cmdParms) cmd.Parameters.Add(parm); ,方法四. ExecuteScalar,public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); using (SqlConnection connection = new SqlConnec
11、tion(connectionString) PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; ,方法五. ExecuteReader,public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params
12、SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); try PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); retur
13、n rdr; catch conn.Close(); throw; ,数据库操作类 :方法一. GetLeave,public int GetLeave(int Inputday) SqlParameter param = new SqlParameter(inputDay, SqlDbType.Int) ; param0.Value = Inputday; string sqlSelect = selConfigLeave; int row=Convert.ToInt32(SqlHelper.ExecuteScalar(connectionstr,CommandType.StoredProc
14、edure,sqlSelect,param); return row; ,方法二. GetLC。,public int GetLC(int LC) SqlParameter param = new SqlParameter(LC, SqlDbType.Int) ; param0.Value = LC; string sqlSelect = select check_employee_level from dbo.LEAVE_CHECK where leave_bill_id=LC; int row = Convert.ToInt32(SqlHelper.ExecuteScalar(connec
15、tionstr, CommandType.Text, sqlSelect, param); return row; ,方法三. updateApprove,public int updateApprove(int leaveid, int check_type) SqlParameter param = new SqlParameter(leaveid, SqlDbType.Int), new SqlParameter(check_type, SqlDbType.Int) ; param0.Value = leaveid; param1.Value = check_type; string s
16、qlUpdate = updateLC; return SqlHelper.ExecuteNonQuery(connectionstr, CommandType.StoredProcedure, sqlUpdate, param); ,方法四. InsertLeaveRecord,public int InsertLeaveRecord(LeaveRecordInfo LRInfo) SqlParameter param = new SqlParameter(EmpID, SqlDbType.Int), new SqlParameter(LeaveTypeID, SqlDbType.Int),
17、 new SqlParameter(BeginDate, SqlDbType.DateTime), new SqlParameter(EndDate, SqlDbType.DateTime); param0.Value = LRInfo.EmpID; param1.Value = LRInfo.LeaveTypeID; param2.Value = LRInfo.BeginDate; param3.Value = LRInfo.EndDate; string sqlInsert = insert into dbo.LeaveRecord(EmpID,LeaveTypeID,BeginDate,
18、EndDate,LeaveState)values(EmpID,LeaveTypeID,BeginDate,EndDate,1); return SqlHelper.ExecuteNonQuery(connectionstr, CommandType.Text, sqlInsert, param); ,方法五. GetEmpName,public List GetEmpName() List ListEmp = new List(); EmployeeInfo emp = null; string sqlSelect = select EmpID, EmployeeName from dbo.
19、Employee; SqlDataReader dr = SqlHelper.ExecuteReader(connectionstr, CommandType.Text, sqlSelect, null); while (dr.Read() emp = new EmployeeInfo(dr.GetInt32(0), dr.GetString(1); ListEmp.Add(emp); return ListEmp; ,六.GetLeaveType,public List GetLeaveType() List ListTY = new List(); LeaveTypeInfo LYInfo
20、 = null; string sqlSelect = SELECT LeaveTypeID,LeaveType FROM dbo.LeaveType; SqlDataReader dr = SqlHelper.ExecuteReader(connectionstr, CommandType.Text, sqlSelect, null); while (dr.Read() LYInfo = new LeaveTypeInfo(dr.GetInt32(0), dr.GetString(1); ListTY.Add(LYInfo); return ListTY; ,方法七. GetGETLeave
21、ALL,public DataTable GetGETLeaveALL(int Empid) DataTable dt = new DataTable(); SqlParameter param = new SqlParameter(empid, SqlDbType.Int) ; param0.Value = Empid; string sqlselect = GetLeave; SqlDataReader dr = SqlHelper.ExecuteReader(connectionstr, CommandType.StoredProcedure, sqlselect, param); dt.Load(dr, LoadOption.OverwriteChanges); return dt; ,方法八. UserCheck。,public bool UserCheck(string username, string userpassword, ref int iEmpI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年汽车销售顾问试用期劳动合同三篇
- 医院药品采购追责制度
- 库房与采购交接制度
- 军训器材采购制度
- 医院物资采购保管制度
- 水库招标采购制度及流程
- 26届3月广东高三·化学
- 2026年河北省邯郸市成安县九年级模拟考试历史试题(无答案)
- 交通运输实验指导书 课件 第4、5章 设计类实训、综合类实训
- 数字化转型下企业采购管理系统的设计与实现路径探究
- 大型赛事活动安保服务方案投标文件(技术标)
- 2026北京航空航天大学 机械工程及自动化学院聘用编专职事务助理、F岗招聘1人考试备考题库及答案解析
- 网络安全培训教材与教学大纲(标准版)
- 2026年东莞市厚街控股集团有限公司招聘14名工作人员备考题库含答案详解
- 《DLT 2976-2025柔性低压直流互联装置技术规范》专题研究报告
- 医学人文培训课件
- 学堂在线 雨课堂 学堂云 科研伦理与学术规范 期末考试答案
- 水域滩涂养殖书面申请书
- 2026年商丘学院单招(计算机)测试模拟题库附答案
- 2025年中职人工智能技术应用(AI数据标注)试题及答案
- 综艺节目制作合作合同模板
评论
0/150
提交评论