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;
}
}
}
最后,传回信息,判断,添加成功