课程4上课日志4+三层架构
课程4 三层架构让代码结构更清晰 上课日志4一、复习、回顾实例4-3主要知识要点验证用户是否登录(Page_Load事件),Session超时时间,注销退出的两种实现方法,C#中的null与数据库中的空值的理解、数据库字段值为空值在读取时处理方法(要用数据读取器读取的时候、要为文本框赋值的时候、要替换Sql语句中的占位符的时候)、数据读取器字段序号与数据读取器.GetInt32(字段序号)的区别、进一步领悟三层架构项目的开发方法。下面二、三为在实例4-3的基础上增加添加学生信息、删除学生信息功能简称为实例4-4二、为实例4-4实现添加学生信息功能1、表现层界面设计 复制UpdateStudent.aspx代码修改即可。lblId可以删除2、编写添加学生信息的数据访问层代码public int InsertStudent(Student stu) string sql = "insert into Student values(stunum,stuname,stuclass,subject,stuage,stuphone,stugender) " SqlParameter paras = new SqlParameter new SqlParameter("stunum",stu.StuNum), new SqlParameter("stuname",stu.StuName), new SqlParameter("stuclass",stu.StuClass), new SqlParameter("subject",stu.Subject),new SqlParameter("stuage",stu.StuAge=null?DBNull.Value:(object)stu.StuAge), new SqlParameter("stuphone",stu.StuPhone), new SqlParameter("stugender",stu.StuGender), ; int count = SqlHelper.ExecuteNonQuery(sql, paras); return count; public int SelectCount(string StuNum) string sql = "select count(*) from Student where StuNum=StuNum" SqlParameter para = new SqlParameter("StuNum", StuNum); int count = Convert.ToInt32(SqlHelper.ExecuteScalar(sql, para); return count; 3、编写添加学生信息的业务逻辑层代码 public bool InsertStudent(Student stu) return dal.InsertStudent(stu) > 0; public bool SelectCount(string StuNum) return dal.SelectCount(StuNum) > 0; 4、编写添加学生信息的表现层代码private StudentBll bll = new StudentBll(); protected void Page_Load(object sender, EventArgs e) if (Session"UserName" = null) Session"UserName" = "" /Response.Redirect("Login.aspx"); Response.Write("<script>alert(你未登录或已超时,请重新登录!);location=Login.aspx</script>"); 与修改学生信息代码差不多 protected void btnSave_Click(object sender, ImageClickEventArgs e) string stuNum = txtStuNum.Text; string stuName = txtStuName.Text; string stuClass = txtStuClass.Text; string subject = txtSubject.Text; if (string.IsNullOrEmpty(stuNum) Response.Write("<script>alert(学号不能为空)</script>"); else if (string.IsNullOrEmpty(stuName) Response.Write("<script>alert(姓名不能为空)</script>"); else if (string.IsNullOrEmpty(stuClass) Response.Write("<script>alert(班级不能为空)</script>"); else if (string.IsNullOrEmpty(subject) Response.Write("<script>alert(学科不能为空)</script>"); else if (bll.SelectCount(stuNum) Response.Write("<script>alert(学号重复)</script>"); else int age; Student stu = new Student(); stu.StuAge = int.TryParse(txtStuAge.Text.Trim(), out age) ? (int?)age : null;/ stu.StuAge = int.TryParse(txtStuAge.Text.Trim(), out age) ? (int?)age : 0; stu.StuClass = stuClass; stu.StuGender = radbtnB.Checked ? "男" : (radbtnG.Checked ? "女" : ""); stu.StuName = stuName; stu.StuNum = stuNum; stu.Subject = subject; stu.StuPhone = txtStuPhone.Text.Trim(); bool isok = bll.InsertStudent(stu); if (isok) Response.Write("<script>alert(添加成功);location=StudentList.aspx</script>"); else Response.Write("<script>alert(添加失败)</script>"); 三、为实例4-4实现删除学生信息功能1、数据访问层代码public int DeleteStudent(int id) string sql = "delete from Student where ID=id" SqlParameter pa = new SqlParameter("id", id); int count=SqlHelper.ExecuteNonQuery(sql,pa); return count;2、业务层代码public bool DeleteStudent(int id) return dal.DeleteStudent(id) > 0; 3、变现层代码删除操作只需要删除数据然后重新加载页面即可,不需要编辑页面。添加一般处理程序DeleteStudent.ashxprivate StudentBll bll = new StudentBll(); public void ProcessRequest(HttpContext context) context.Response.ContentType = "text/html" /c