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

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

   1、上集回顾  

       上篇文章我们介绍了三层架构的运行机制,其中包含了对实体类的理解,而后又以简单的登录为例展示了一下,接下来就让我们看看三层架构与“四大天王”的交互

        所谓的四大天王也就是对数据的四大操作——增、删、改、查,这四个功能是最基本,也是最主要的。那么,下面我们就来展示一下如何利用三层向数据库中增加数据

   2、增

       (1)UI层

        首先是由用户向U层输入要添加的数据

                         
        以下是确认添加的代码
        private void button1_Click(object sender, EventArgs e)
        {

            Login.Model.UserInfo user = new Login.Model.UserInfo();           //实例化一个用户的实体,最为三层传递的信息
            Login.Model.UserInfo User = new Login.Model.UserInfo();           //实例化一个用户实体,用来接收传回的信号
            UserAdd.BLL.AddBLL userAB = new UserAdd.BLL.AddBLL();             //实例化B层对象

            //获取所要保存的数据,全部打包到user对象中
            user.UserName = txtUserName.Text.Trim();
            user.Password = txtPassword.Text;

            //将user传给B层处理,并将结果返回给User
            User=userAB.Add(user);

            if (User.Flag)
            {
                MessageBox.Show("添加用户成功!");
            }
            else if (User.Flag==false)
            {
                MessageBox.Show("该用户已经存在!");
            }
            else
            {
                MessageBox.Show("添加用户失败!");
            }
        }

       (2)BLL层

         负责将U层传来的实体,交给D层处理,然后返回D层传来的实体
    public class AddBLL
    {
        //增加信息的方法,传入一个实体类型,并返回一个实体类型
         public Login.Model.UserInfo Add(Login.Model.UserInfo user)
        {
             //实例化D层
             UserAdd.DAL.AddDAL userAD = new UserAdd.DAL.AddDAL();

             //实例化一个实体,用于接收传回的数据
             Login.Model.UserInfo User = new Login.Model.UserInfo();

             //将实体user传给D层处理,由实体User接收返回的数据
             User=userAD.Add(user);

             return User;   //返回实体信息
        }
    }
       (3)DAL层
          将B层传来的实体信息写入数据库,然后返回是否操作成功(由于上篇文章有DBUtil类,故此处省略)
    public class AddDAL
    {
       public Login.Model.UserInfo Add(Login.Model.UserInfo user)
        {
           //查询功能,查找该用户是否存在,若存在则不能添加
           using(SqlConnection conn=new SqlConnection(DBUtil.ConnString ))      //用来链接数据库,自动关闭
           {

               SqlCommand cmd = conn.CreateCommand();     //用来操作数据库

               cmd.CommandText = @"SELECT * FROM USERS WHERE UserName=@UserName";     //查询语言
               cmd.CommandType = CommandType.Text;
               cmd.Parameters.Add(new SqlParameter("@UserName", user.UserName));      //传入参数

               conn.Open();      //打开链接

               SqlDataReader reader = cmd.ExecuteReader();       //读取行的变量

               Login.Model.UserInfo User = new Login.Model.UserInfo();   //实例化实体,用传回信息
               while (reader.Read())
               {
                   //如果用户名存在,就返回用户为Flase
                   if (User==null)
                   {
                       User.Flag = false;
                   }
                   return User;   //传回信息,结束操作
               }
           }

           //如果该用户不存在,则将信息保存
           using(SqlConnection conn=new SqlConnection(DBUtil.ConnString ))
           {

               SqlCommand cmd = conn.CreateCommand();

               cmd.CommandText = @"INSERT INTO USERS(UserName,Password,Email) VALUES(@username,@password,@email)";
               cmd.CommandType = CommandType.Text;

               //传入参数
               cmd.Parameters.Add(new SqlParameter("@username", user.UserName));
               cmd.Parameters.Add(new SqlParameter("@password", user.Password));
               cmd.Parameters.Add(new SqlParameter("@email", user.Email));


               conn.Open();
               cmd.ExecuteNonQuery();   //执行SQL添加语句,返回1

               //实例化实体,并传回
               Login.Model.UserInfo User = new Login.Model.UserInfo();
               User.Flag = true;
               return User;
           }
        }
    }
      最后,传回信息,判断,添加成功