首页 > 代码库 > 三层架构与四大天王之——删
三层架构与四大天王之——删
上篇我们介绍了,数据库四大功能之一——增,这次我们就说说如何利用三层设计来对数据实现删除记录的功能。
1、刷新
要想删除数据库中的记录,首先我们应该将表中的数据显示出来,所以此功能的实现方法如下
1.1UI层
其代码
[csharp] view plaincopy
- //刷新按钮,刷新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层
[csharp] view plaincopy
- 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层
[csharp] view plaincopy
- 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层
代码
[csharp] view plaincopy
- //删除选中的信息
- 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层
[csharp] view plaincopy
- 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层
[csharp] view plaincopy
- 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结果显示
三层架构与四大天王之——删
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。