文章出處
文章列表
一:分層架構
搭建DAL層(數據訪問層)、UI層(表示層)、BLL層(業務邏輯層)以及Model層(實體層)
各層的引用關系:
DAL、UI、BLL層引用Model層
UI層引用BLL層
BLL層引用DAL層
二:實現登錄功能
StudentDAL層
定義一個bool變量,將Student對象作為參數,使用SqlParameter對象進行填充,判定count值,若大于0.返回真
//01.寫一個用于登錄的方法 public bool IsLogin(Student stu) { bool flag = false; //string sql = "select count(1) from student where studentname='" + stu.StudentName + "' and loginpwd='" + stu.LoginPwd + "'"; string sql = "select count(1) from student where studentname=@name and LoginPwd=@pwd"; SqlParameter[] para ={ new SqlParameter("@name",stu.StudentName), new SqlParameter("@pwd",stu.LoginPwd) }; //02.將sql語句交給SQL服務器執行 int count = Convert.ToInt32(SQLHelper.ExecuteScalar(sql,para)); if (count > 0) { flag = true; } return flag; }
StudentBLL層 數據傳遞
StudentDAL dal = new StudentDAL(); //登錄 public bool isLogin(Student stu) { bool result = dal.IsLogin(stu); return result; }
UI層
獲取兩個文本框的值,定義bool變量,拿到登錄的方法,傳入參數
//登錄 private void btnLogin_Click(object sender, EventArgs e) { StudentBLL bll = new StudentBLL(); Student stu=new Student(); stu.StudentName = txtName.Text; stu.LoginPwd = txtPwd.Text; bool result= bll.isLogin(stu); if (result) { frmMain frm = new frmMain(); this.Hide(); frm.Show(); }
三 實現新增學生用戶
StudentDAL層
//添加學生 public bool AddStudent(Student stu) { bool flag = false; string sql = "insert into Student Values(@LoginPwd,@StudentName,@Gender,@GradeId,@Phone,@Address,@Birthday,@Email)"; SqlParameter []para= { new SqlParameter("@LoginPwd",stu.LoginPwd), new SqlParameter("@StudentName",stu.StudentName), new SqlParameter("@Gender",stu.Gender), new SqlParameter("@GradeId",stu.GradeId), new SqlParameter("@Phone",stu.Phone), new SqlParameter("@Address",stu.Address), new SqlParameter("@Birthday",stu.Birthday), new SqlParameter("@Email",stu.Email), }; int count = SQLHelper.ExecuteNonQuery(sql,para); if(count>0) { flag = true; } return flag; }
StudentBLL層
//添加學生 public bool AddStudent(Student stu) { bool result = dal.AddStudent(stu); return result; }
UI層
//保存 private void btnEdit_Click(object sender, EventArgs e) { //從界面獲取各個值 Student stu = new Student(); stu.LoginPwd = txtPwd.Text; stu.StudentName = txtName.Text; stu.Gender = rbtnFemale.Checked?"0":"1"; stu.Phone = txtPhone.Text; stu.Address = txtAddress.Text; stu.Email = txtEmail.Text; //出生日期 stu.Birthday = dpBirthday.Value; //年級編號 stu.GradeId = Convert.ToInt32(cboGrade.SelectedValue); bool result = studal.AddStudent(stu); if (result) { MessageBox.Show("添加成功!"); } else { MessageBox.Show("添加失敗!"); } }
四 加載學生信息<查詢>
DAL層
返回的是泛型集合、可使用MyTool工具類或者foreach遍歷
//泛型 public List<Student> GetAllStudent() { // List<Student> list = new List<Student>(); string sql = "select * from Student"; DataTable dt= SQLHelper.ExecuteDataTable(sql); MyTool tool = new MyTool(); List<Student> list = tool.DataTableToList<Student>(dt); //foreach (DataRow item in dt.Rows) //{ // Student stu = new Student(); // stu.StudentName = item["StudentName"].ToString(); // stu.StudentNo = Convert.ToInt32(item["StudentNo"]); // stu.LoginPwd =item["LoginPwd"].ToString(); // list.Add(stu); //} return list; }
BLL層
//泛型 public List<Student> GetAllStudent() { List<Student> list = dal.GetAllStudent(); return list; }
UI層
StudentBLL stuBll = new StudentBLL(); GradeBLL GBll = new GradeBLL(); //主窗體 private void FrmSearchByGrade_Load(object sender, EventArgs e) { //刪除英文列 dgvList.AutoGenerateColumns = false; List<Student>list= stuBll.GetAllStudent(); dgvList.DataSource = list; List<Grade> glist = GBll.GetAllGrade(); //綁定年級下拉框值 cboGrade.ValueMember = "GradeId"; cboGrade.DisplayMember = "GradeName"; cboGrade.DataSource = glist; } //查詢 private void btnSearch_Click(object sender, EventArgs e) { int gradeid =Convert.ToInt32(cboGrade.SelectedValue); //使用BLL層 List<Student> list = stuBll.ByGradeId(gradeid); dgvList.DataSource = list; }
五 刪除學生信息
DAL層
//刪除 public bool Delete(int stuNo) { bool flag = false; string sql="delete from Student where StudentNo=@No"; SqlParameter para = new SqlParameter("@No",stuNo); int count = SQLHelper.ExecuteNonQuery(sql,para); if(count>0) { flag = true; } return flag; }
BLL層
//刪除 public bool Delete(int stuNo) { return dal.Delete(stuNo); }
UI層
注:光標位置
記錄選中行的索引值 定義變量index、光標回到index-1
//刪除 private void tsmi_del_Click(object sender, EventArgs e) { int stuno = Convert.ToInt32(dgvList.SelectedRows[0].Cells["Column2"].Value); //記錄選中行的索引值 int index = dgvList.CurrentRow.Index; //MessageBox.Show(index.ToString()); bool flag = stuBll.Delete(stuno); if(flag) { MessageBox.Show("刪除成功!"); List<Student> list = stuBll.GetAllStudent(); dgvList.DataSource = list; //光標回到index-1 dgvList[0, index].Selected = true; dgvList.CurrentCell=dgvList[0,index]; } }
六 修改學生信息
DAL層
//修改 public bool UpdateInfo(Student stu) { bool flag = false; string sql = "update Student set StudentName=@stuName,Gender=@gender,Birthday=@birthday where StudentNo=@No"; SqlParameter[] para = { new SqlParameter("@stuName",stu.StudentName), new SqlParameter("@gender",stu.Gender), new SqlParameter("@birthday",stu.Birthday), new SqlParameter("@No",stu.StudentNo) }; int count = SQLHelper.ExecuteNonQuery(sql,para); if(count>0) { flag = true; } return flag; }
BLL層:
//修改 public bool UpdateInfo(Student stu) { return dal.UpdateInfo(stu); }
窗體的關聯:
private void tsmi_update_Click(object sender, EventArgs e) { FrmUpdate frm = new FrmUpdate(); frm.dgvList = dgvList; frm.Show(); }
UI層 Load事件中實現窗體的傳值
StudentBLL stubll = new StudentBLL(); public DataGridView dgvList; Student stu = new Student(); private void FrmUpdate_Load(object sender, EventArgs e) { stu.StudentNo = Convert.ToInt32(dgvList.SelectedRows[0].Cells["Column2"].Value); stu.StudentName = dgvList.SelectedRows[0].Cells["name"].Value.ToString(); stu.Gender = dgvList.SelectedRows[0].Cells["Column3"].Value.ToString(); stu.Birthday = Convert.ToDateTime(dgvList.SelectedRows[0].Cells["Column4"].Value); // MessageBox.Show(stu.StudentName.ToString()); this.txtNo.Text = stu.StudentNo.ToString(); this.txtName.Text = stu.StudentName; this.txtGender.Text = stu.Gender; this.txtBirthday.Text = stu.Birthday.ToString(); } private void btnUpdate_Click(object sender, EventArgs e) { stu.StudentName = txtName.Text; stu.Gender = txtGender.Text; stu.Birthday = Convert.ToDateTime(txtBirthday.Text); bool flag = stubll.UpdateInfo(stu); if(flag) { MessageBox.Show("修改成功!!"); List<Student> list = stubll.GetAllStudent(); dgvList.DataSource = list; } }
文章列表
全站熱搜