• 三层架构,四大天王——删


          第一部分我们介绍,间数据库的四个功能——增加。这一次,我们将讨论除记录的功能

       1、刷新

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

          1.1UI层

             

           其代码

            //刷新button,刷新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 ());         //获取所选行的第二列。即得到username
                    }
                        
                }
                
                //推断是否已经选中要删除的记录
                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];                                    //取出username
                            cmd.Parameters.Add(new SqlParameter("@UserName", User.UserName));      //获取所要删除的用户
                            cmd.ExecuteNonQuery();              //运行SQL,删除用户
                            cmd.Parameters.Clear();             //必须清空參数
    
                            //断开连接
                            conn.Close();
                        }
    
                        return true;
                    }
    
                    catch
                    {
                        return false;     //假设出错就返回false
                    }
                }
            }
        }

          2.4结果显示

                                       

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

                  


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    关于加密程序
    C++11的新特性lambda的小试牛刀RAII
    自动生成makefile的脚本
    关于pcre正则表达式库libpcre
    利用PHP执行SQL文件,将SQL文件导入到数据库
    Linux 系统是否适合于您?
    一个少年电脑病毒作者的独白
    PHP编程效率的20个要点
    JVM源码分析之javaagent原理完全解读
    如何更好的利用Node.js的性能极限
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4904581.html
Copyright © 2020-2023  润新知