前言
经历了VB.NET之后,接下来的学习就是三层,三层的学习,让我初步了解分层的思想。三层的学习,是视频中老师通过具体的一个实例来讲解的,讲解的很是详细的!通过总结,使得自己的思路更加清晰,也希望对大家有帮助
核心
(一)解决方案
解决方案,这让我们一览项目全局,知道这个项目中有什么?
(二)如何做
1.首先我们建起了自己的项目
2.之后把各层、层中的类建起来,这样大致的三层框架就出来了
3.注意,添加引用,引用的作用是很重要的
4.开始敲代码
(三)代码模块
U层:LoginUI
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">private void btnLogin1_Click_1(object sender, EventArgs e)
{
string userName = txtUserName1.Text.Trim(); //将文本框中的姓名赋值给新的变量userName
string password = txtPassword1.Text;//同样将文本框中的密码赋值给新的变量password
Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();//实例化Login.BLL.LoginManager
Login .Model .UserInfo user= mgr.UserLogin(userName, password);//把U层的userName,password传入实体中
MessageBox.Show("登录用户:" + user.UserName);//提示框显示此时的登录用户
}</span></span></span>
B层:LoginBLL
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">namespace Login.BLL
{
public class LoginManager
{
public Login.Model.UserInfo UserLogin(string userName,string password)
{
Login .DAL .UserDAO uDao = new Login.DAL.UserDAO();//实例化Login.DAL.UserDAO
Login.Model.UserInfo user = uDao.SelectUser(userName, password);//把当前的userName, password传给实体层
if (user !=null )//判断用户是否为空
{
Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();//实例化Login.DAL.ScoreDAO
sDao.Update(userName, 10);//更新该用户,给用户加分
return user;
}
else
{
throw new Exception("登录失败");//用户为空,显示登录失败
}
}</span></span></span>
D层:LoginDAL
DbUtil类
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">namespace Login.DAL
{
public class DbUtil
{
public static string ConnString = @"Server=dujuan;Database=Login;User ID=sa;Password=sjk";
//连接数据库,Server:计算机名
}
}</span></span></span>
userDAO类<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">namespace Login.DAL
{
public class UserDAO
{
public Login .Model .UserInfo SelectUser(string userName,string password)
{
//using后连接自动关闭
using ( SqlConnection conn=new SqlConnection (DbUtil .ConnString ))
{
SqlCommand cmd = conn.CreateCommand();//创建命令对象
cmd.CommandText = @"SELECT ID,UserName,Password,Email FROM USERS WHERE UserName=@UserName AND Password=@Password";
cmd .CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@UserName", userName));
cmd.Parameters.Add(new SqlParameter("@Password", password));
conn.Open();//打开连接
SqlDataReader reader = cmd.ExecuteReader();
Login.Model.UserInfo user = null;
while (reader .Read ())//读取数据,调用Read方法,判断数据库是否有数据
{
if (user ==null )
{
user = new Login.Model.UserInfo();
}
user.ID=reader.GetInt32(0);
user.UserName = reader.GetString(1);
user.Password = reader.GetString(2);
if (!reader .IsDBNull (3))
{
user.Email = reader.GetString(3);
}
}
return user;//返回对象
}
}
}
}</span></span></span>
scoreDAO类
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">amespace Login.DAL
{
public class ScoreDAO
{
public void Update(string userName, int value)//更新
{
using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
{
SqlCommand cmd = conn.CreateCommand();//创建命令
cmd.CommandText = @"INSERT INTO SCORES(UserName,Score)Values(@UserName,@Score)";
cmd.Parameters.Add(new SqlParameter("@UserName", userName));
cmd.Parameters.Add(new SqlParameter("@Score", value));
conn.Open();//打开连接
cmd.ExecuteNonQuery();//执行命令
}
}
}
}</span></span></span>
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">namespace Login.Model
{
public class UserInfo
{
public int ID { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
}
}</span></span></span>
(三)理解
三层:
UI层: 界面层:主要是用户看到的内容,主要作用,获取文本框中的内容:用户名和密码,将获取到的用户名和密码传送给B层。
BLL层:
业务逻辑层:将U层传送的信息传给DAL层,并接收D层返回来的查询结果。将查询结果和从U层传递来的数据进行比较。
DAL层:
DAL层:
数据访问层:创建数据库连接,在数据库中查询用户名和密码,将查到的结果返回给B层。最后,将结果返回给U层。
实体层:
封装数据,在各层中间传递。实体层的声明的变量与数据库表是对应的,表中有多少内容,在实体层就声明多少
三层之间的引用关系(包图):
总结:
这只是刚刚开始,在下一篇博客中,我们一起来学习三层的基本知识,了解是什么?为什么?巩固基础,添砖加瓦。