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

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

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

   1、刷新

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

      1.1UI层

     

       其代码

 

[csharp] view plaincopy技术分享技术分享
  1. //刷新按钮,刷新Users表的信息  
  2. private void button1_Click(object sender, EventArgs e)  
  3. {  
  4.     //实例化一个用户集,用来接收传回来的信息  
  5.     ArrayList UsersList = new ArrayList();  
  6.     //实例化B层  
  7.     UserModify.BLL.RefreshBLL RefB = new UserModify.BLL.RefreshBLL();  
  8.   
  9.     //调用B层,并接收传回的信息  
  10.     UsersList = RefB.Refresh();  
  11.   
  12.     //显示信息  
  13.     this.dataGridView1.DataSource = UsersList;       
  14. }  

       1.2BLL层

[csharp] view plaincopy技术分享技术分享
  1. public class RefreshBLL      //B层刷新类  
  2. {  
  3.     //刷新的方法,返回一个集合  
  4.     public ArrayList Refresh()  
  5.     {  
  6.         //实例化一个用户集,用来接收传回来的信息  
  7.         ArrayList  UsersList = new ArrayList ();  
  8.   
  9.         //让D层处理,并接收返回信息  
  10.         UserModify .DAL.RefreshDAL refDal=new UserModify .DAL .RefreshDAL ();  
  11.         UsersList = refDal.Refresh();  
  12.   
  13.         return UsersList;   //返回用户集  
  14.     }          
  15. }  

       1.3DAL层

[csharp] view plaincopy技术分享技术分享
  1. public class RefreshDAL  
  2. {  
  3.     public ArrayList Refresh()         //刷新,返回一个集合  
  4.     {  
  5.         using(SqlConnection conn=new SqlConnection(DBUtil.ConnString ))  
  6.         {  
  7.             //查询语句  
  8.             string Select = @"SELECT * FROM USERS";  
  9.   
  10.             //打开数据库的连接  
  11.             conn.Open();  
  12.   
  13.             //查询数据  
  14.             DataSet ds = new DataSet();      //用来保存查到的数据  
  15.             SqlDataAdapter dataAdpt = new SqlDataAdapter(Select,conn);    //执行SQL语句  
  16.             dataAdpt.Fill(ds);      //保存结果集  
  17.   
  18.             //实例化一个用户集,用来返回信息  
  19.             ArrayList UsersList = new ArrayList();  
  20.   
  21.             //利用循环,查出表中所有记录                
  22.             for (int i=0;i<ds.Tables[0].Rows.Count;i++)  
  23.             {  
  24.                 Login.Model.UserInfo user = new Login.Model.UserInfo();       //实例化一个用户  
  25.                   
  26.                 //得到单个用户信息  
  27.                 user.ID=i+1;  
  28.                 user.UserName=ds.Tables[0].Rows[i]["UserName"].ToString();  
  29.                 user.Password = ds.Tables[0].Rows[i]["Password"].ToString();  
  30.                 user.Email  = ds.Tables[0].Rows[i]["Email"].ToString();  
  31.   
  32.                 UsersList.Add(user);    //将用户信息存入用户集  
  33.             }  
  34.   
  35.             return UsersList;      //返回用户集  
  36.         }  
  37.     }  
  38. }  

      1.4结果显示

          

   2、删除

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

     2.1UI层

              
        代码
[csharp] view plaincopy技术分享技术分享
  1.     //删除选中的信息  
  2.     private void button2_Click(object sender, EventArgs e)  
  3.     {  
  4.         Login.Model .UserInfo  user=new Login.Model .UserInfo ();  
  5.         //实例化一个集合,用来存取准备删除的所有记录  
  6.         IList<string> userNameList=null;             
  7.           
  8.         //查找是否有选择的记录  
  9.         if (dataGridView1.SelectedRows.Count!=0)  
  10.         {  
  11.             //如果有选中项,就将记录传到集合中  
  12.             userNameList = new List<string>();      //实例化一个集合  
  13.   
  14.             //循环,将所有选中项,都保存到集合中  
  15.             for (int i = 0; i < dataGridView1.SelectedRows.Count;i++ )  
  16.             {       
  17.                 //user.UserName = ;  
  18.                 userNameList.Add(dataGridView1.SelectedRows[i].Cells[1].Value.ToString ());         //获取所选行的第二列,即得到用户名  
  19.             }  
  20.                   
  21.         }  
  22.           
  23.         //判断是否已经选中要删除的记录  
  24.         if (userNameList==null)  
  25.         {  
  26.             MessageBox.Show("请选择要删除的行");  
  27.             return;  
  28.         }  
  29.   
  30.         //如果已经选中,则将记录集交由B层处理  
  31.         UserModify.BLL.ModifyBLL deleteBLL = new UserModify.BLL.ModifyBLL();  
  32.   
  33.         //B层处理,并判断是否删除成功  
  34.         if (deleteBLL.Modify(userNameList))  
  35.         {  
  36.             MessageBox.Show ("删除数据成功,请刷新数据");  
  37.         }  
  38.         else  
  39.         {  
  40.             MessageBox.Show("删除数据失败!");  
  41.   
  42.         }  
  43.     }        
  44. }<span style="font-size:18px; ">     </span>  

      2.2BLL层

 

[csharp] view plaincopy技术分享技术分享
  1. public class ModifyBLL  
  2. {  
  3.     public bool Modify(IList <string> usersDelete)  
  4.     {  
  5.         //实例化D层  
  6.         UserModify.DAL.ModifyDAL deleteDal = new UserModify.DAL.ModifyDAL();  
  7.   
  8.         //将数据交由D层处理,  
  9.         if (deleteDal.Modify(usersDelete))           //如果成功返回true  
  10.         {  
  11.             return true;  
  12.         }  
  13.         else  
  14.         {  
  15.             return false;                           //如果失败返回false  
  16.         }       
  17.     }  
  18. }  

     2.3DAL层

[csharp] view plaincopy技术分享技术分享
  1. public class ModifyDAL  
  2. {  
  3.     public bool Modify(IList <string> userDelete)  
  4.     {  
  5.         using (SqlConnection conn = new SqlConnection(DBUtil.ConnString))  
  6.         {  
  7.             SqlCommand cmd = conn.CreateCommand();   //用来执行SQL语句等  
  8.   
  9.             try  
  10.             {  
  11.                 //利用循环,将选中的数据删除  
  12.                 for (int i = 0; i < userDelete.Count; i++)  
  13.                 {  
  14.                     cmd.CommandText = @"DELETE FROM Users WHERE UserName=@UserName";  
  15.                     cmd.CommandType = CommandType.Text;  
  16.   
  17.                     //打开数据库  
  18.                     conn.Open();  
  19.   
  20.                     Login.Model.UserInfo User = new Login.Model.UserInfo();        //声明一个用户实例  
  21.                     User.UserName = userDelete[i];                                    //取出用户名  
  22.                     cmd.Parameters.Add(new SqlParameter("@UserName", User.UserName));      //获取所要删除的用户  
  23.                     cmd.ExecuteNonQuery();              //执行SQL,删除用户  
  24.                     cmd.Parameters.Clear();             //必须清空参数  
  25.   
  26.                     //断开连接  
  27.                     conn.Close();  
  28.                 }  
  29.   
  30.                 return true;  
  31.             }  
  32.   
  33.             catch  
  34.             {  
  35.                 return false;     //如果出错就返回false  
  36.             }  
  37.         }  
  38.     }  
  39. }  

      2.4结果显示

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