文章出處

一:分層架構

搭建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;
            }
        }

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()