首页 > 代码库 > 三层架构与四大天王之——删

三层架构与四大天王之——删

      上篇我们介绍了,数据库四大功能之一——增,这次我们就说说如何利用三层设计来对数据实现删除记录的功能

   1、刷新

      要想删除数据库中的记录,首先我们应该将表中的数据显示出来,所以此功能的实现方法如下

      1.1UI层

         

       其代码

        //刷新按钮,刷新Users表的信息        private void button1_Click(object sender, EventArgs e)        {            //实例化一个用户集,用来接收传回来的信息            ArrayList UsersList = new ArrayList();            //实例化B层            UserModify.BLL.RefreshBLL RefB = new UserModify.BLL.RefreshBLL();            //调用B层,并接收传回的信息            UsersList = RefB.Refresh();            //显示信息            this.dataGridView1.DataSource = UsersList;             }

       1.2BLL层

    public class RefreshBLL      //B层刷新类    {        //刷新的方法,返回一个集合        public ArrayList Refresh()        {            //实例化一个用户集,用来接收传回来的信息            ArrayList  UsersList = new ArrayList ();            //让D层处理,并接收返回信息            UserModify .DAL.RefreshDAL refDal=new UserModify .DAL .RefreshDAL ();            UsersList = refDal.Refresh();            return UsersList;   //返回用户集        }            }

       1.3DAL层

    public class RefreshDAL    {        public ArrayList Refresh()         //刷新,返回一个集合        {            using(SqlConnection conn=new SqlConnection(DBUtil.ConnString ))            {                //查询语句                string Select = @"SELECT * FROM USERS";                //打开数据库的连接                conn.Open();                //查询数据                DataSet ds = new DataSet();      //用来保存查到的数据                SqlDataAdapter dataAdpt = new SqlDataAdapter(Select,conn);    //执行SQL语句                dataAdpt.Fill(ds);      //保存结果集                //实例化一个用户集,用来返回信息                ArrayList UsersList = new ArrayList();                //利用循环,查出表中所有记录                              for (int i=0;i<ds.Tables[0].Rows.Count;i++)                {                    Login.Model.UserInfo user = new Login.Model.UserInfo();       //实例化一个用户                                        //得到单个用户信息                    user.ID=i+1;                    user.UserName=ds.Tables[0].Rows[i]["UserName"].ToString();                    user.Password = ds.Tables[0].Rows[i]["Password"].ToString();                    user.Email  = ds.Tables[0].Rows[i]["Email"].ToString();                    UsersList.Add(user);    //将用户信息存入用户集                }                return UsersList;      //返回用户集            }        }    }

      1.4结果显示

           

   2、删除

     表中的数据显示出来以后,我们就可以根据需要来删除我们不想要的记录(一条或多条)

     2.1UI层

               
        代码
        //删除选中的信息        private void button2_Click(object sender, EventArgs e)        {            Login.Model .UserInfo  user=new Login.Model .UserInfo ();            //实例化一个集合,用来存取准备删除的所有记录            IList<string> userNameList=null;                                   //查找是否有选择的记录            if (dataGridView1.SelectedRows.Count!=0)            {                //如果有选中项,就将记录传到集合中                userNameList = new List<string>();      //实例化一个集合                //循环,将所有选中项,都保存到集合中                for (int i = 0; i < dataGridView1.SelectedRows.Count;i++ )                {                         //user.UserName = ;                    userNameList.Add(dataGridView1.SelectedRows[i].Cells[1].Value.ToString ());         //获取所选行的第二列,即得到用户名                }                                }                        //判断是否已经选中要删除的记录            if (userNameList==null)            {                MessageBox.Show("请选择要删除的行");                return;            }            //如果已经选中,则将记录集交由B层处理            UserModify.BLL.ModifyBLL deleteBLL = new UserModify.BLL.ModifyBLL();            //B层处理,并判断是否删除成功            if (deleteBLL.Modify(userNameList))            {                MessageBox.Show ("删除数据成功,请刷新数据");            }            else            {                MessageBox.Show("删除数据失败!");            }        }          }<span style="font-size:18px; ">     </span>

      2.2BLL层

    public class ModifyBLL    {        public bool Modify(IList <string> usersDelete)        {            //实例化D层            UserModify.DAL.ModifyDAL deleteDal = new UserModify.DAL.ModifyDAL();            //将数据交由D层处理,            if (deleteDal.Modify(usersDelete))           //如果成功返回true            {                return true;            }            else            {                return false;                           //如果失败返回false            }             }    }

     2.3DAL层

    public class ModifyDAL    {        public bool Modify(IList <string> userDelete)        {            using (SqlConnection conn = new SqlConnection(DBUtil.ConnString))            {                SqlCommand cmd = conn.CreateCommand();   //用来执行SQL语句等                try                {                    //利用循环,将选中的数据删除                    for (int i = 0; i < userDelete.Count; i++)                    {                        cmd.CommandText = @"DELETE FROM Users WHERE UserName=@UserName";                        cmd.CommandType = CommandType.Text;                        //打开数据库                        conn.Open();                        Login.Model.UserInfo User = new Login.Model.UserInfo();        //声明一个用户实例                        User.UserName = userDelete[i];                                    //取出用户名                        cmd.Parameters.Add(new SqlParameter("@UserName", User.UserName));      //获取所要删除的用户                        cmd.ExecuteNonQuery();              //执行SQL,删除用户                        cmd.Parameters.Clear();             //必须清空参数                        //断开连接                        conn.Close();                    }                    return true;                }                catch                {                    return false;     //如果出错就返回false                }            }        }    }

      2.4结果显示

                                   

然后,在刷新一下,就发现我们要删除的记录已经不存在了