C#分层开发MySchool
No.1实现登陆功能,验证用户名和密码。从数据库里进行匹配,看是否有符合要求的数据。
在DAL层编写代码,返回值为布尔类型。方法参数为(student实体类对象),使用参数化SqlParameter类型防止SQL注入。
1 public bool IsLogin(Student stu) 2 { 3 bool flag = false; 4 SqlConnection con = new SqlConnection(SqlHelper.str); 5 6 string sql = "select count(1) from student where studentNo=@StudentName and LoginPwd=@LoginPwd"; 7 //02 将sql语句交给SQL服务器执行 8 SqlParameter para1 = new SqlParameter("@StudentName", stu.StudentNo); 9 SqlParameter para2 = new SqlParameter("@LoginPwd", stu.LoginPwd); 10 SqlCommand cmd = new SqlCommand(sql,con); 11 cmd.Parameters.Add(para1); 12 cmd.Parameters.Add(para2); 13 try 14 { 15 con.Open(); 16 int count = Convert.ToInt32(cmd.ExecuteScalar()); 17 if (count > 0) 18 { 19 flag = true; 20 } 21 } 22 catch (Exception ex) 23 { 24 25 throw ex; 26 } 27 finally 28 { 29 con.Close(); 30 } 31 return flag; 32 }
在BLL层创建DAL层的对象,调用DAL层的login方法,返回值和参数和DAL层login方法一致,return dal.login(stu)
1 public bool IsLogin(Student stu) 2 { 3 return dal.IsLogin(stu); 4 }
在UI层调用BLL层的方法,,并在UI层创建实体类对象,给实体类对象的属性赋值后将对象放入调用的BLL层的方法中。判断登陆是否成功!
1 StudentBLL bll = new StudentBLL(); 2 Student stu = new Student(); 3 stu.StudentNo = Convert.ToInt32(txtName.Text); 4 stu.LoginPwd = txtPwd.Text; 5 bool flag = bll.IsLogin(stu); 6 if (flag) 7 { 8 MessageBox.Show("登陆成功"); 9 frmlist list = new frmlist(); 10 list.Show(); 11 } 12 else 13 { 14 MessageBox.Show("登陆失败"); 15 }
No.2展示学生信息
在DAL层编写方法返回值是泛型集合,无方法参数,使用工具类(SqlHelper类)将DataTable类型转换为泛型
1 public List<Student> Select() 2 { 3 SqlConnection con = new SqlConnection(SqlHelper.str); 4 string sql = "select * from student"; 5 DataTable dt = SqlHelper.ExecuteDataTable(sql); 6 My_Tool tool = new My_Tool(); 7 List<Student> list = tool.DataTableToList<Student>(dt); 8 return list; 9 10 }
在BLL层编写方法与DAL层同理
1 public List<Student> Select() 2 { 3 return dal.Select(); 4 }
在UI层的初始化Select方法()将数据绑定到datagridView中!
1 private void frmlist_Load(object sender, EventArgs e) 2 { 3 Initial(); 4 } 5 public List<Student> list = new List<Student>(); 6 public void Initial() 7 { 8 StudentBLL bll = new StudentBLL(); 9 list= bll.Select(); 10 this.dgvlist.DataSource = list; 11 12 }
No.3实现添加学生信息
Insert语句插入数据的参数较多,所以我们可以声明一个SqlParaMeters类型的数组,节约代码,方法返回值依然是bool类型,方法参数是Student类型的对象。注意!在给Command对象添加参数的时候
要使用AddRange()方法!
1 public bool Insert(Student stu) 2 { 3 bool flag = false; 4 SqlConnection con = new SqlConnection(SqlHelper.str); 5 string sql = "insert into student values(@LoginPwd,@StudentName,@Gender,@GradeId,@Phone,@Address,@Birthday,@Email,@MyTT)"; 6 SqlParameter[] para = 7 { 8 new SqlParameter("@LoginPwd", stu.LoginPwd), 9 new SqlParameter("@StudentName", stu.StudentName), 10 new SqlParameter("@Gender", stu.Gender), 11 new SqlParameter("@GradeId", stu.GradeId), 12 new SqlParameter("@Phone", stu.Phone), 13 new SqlParameter("@Address", stu.Address), 14 new SqlParameter("@Birthday", stu.Birthday), 15 new SqlParameter("@Email", stu.Email), 16 new SqlParameter("@MyTT", stu.MyTT) 17 }; 18 SqlCommand cmd = new SqlCommand(sql,con); 19 cmd.Parameters.AddRange(para); 20 21 try 22 { 23 con.Open(); 24 int count = Convert.ToInt32(cmd.ExecuteScalar()); 25 if (count > 0) 26 { 27 flag = true; 28 } 29 30 } 31 catch (Exception ex) 32 { 33 34 throw ex; 35 } 36 finally 37 { 38 con.Close(); 39 } 40 return flag; 41 }
在BLL层同样实现了方法调用!
1 public bool Insert(Student stu) 2 { 3 return dal.Insert(stu); 4 }
在UI层调用BLL层的方法,给Student类的属性赋值,判断是否添加学生信息成功!
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/63534.html
- 上一篇:快速理解C#中的委托与事件
- 下一篇:Delphi十进制和十六进制互转