标签:
上篇文章我们介绍了一下三层架构的基础知识,这次就让我们来探寻一下他的执行机制吧。
实体类——实体类事实上是存放数据的,我们在数据库读取的数据就是存放在实体层里面的(是辅助数据库的映射,能够理解为传递数据的载体)。实体类主要是作为数据管理和业务逻辑处理层面上存在的类别;
它们主要在分析阶段区分实体类的主要职责是存储和管理系统内部的信息,它也能够有行为,甚至非常复杂的行为,但这些行为必须与它所代表的实体对象密切相关。实体类相应数据库中一个表,实体类的每一个属性相应表中相应的字段,使用实体类符合面向对象编程的思想,把一个表封装成一个类。
private void button1_Click(object sender, EventArgs e)
{
//实例化一个模型对象
Login.Model.UserInfo user = new Login.Model.UserInfo();
//讲參数传给该对象
user.UserName=txtUserName.Text.Trim();
user.Password=txtPassword.Text;
//实例化B层
Login.BLL.UserManager mgr = new Login.BLL.UserManager();
//将该对象传给B层处理
Login.Model.UserInfo User = mgr.UserLogin(user);
//依据传回的信息做推断
MainUI.Form1 frm = new MainUI.Form1();
frm.Show();
this.Hide();
} public class UserManager
{
public Login.Model.UserInfo UserLogin(Login.Model.UserInfo user)
{
//调用D层
Login.DAL.UserDAO udao = new Login.DAL.UserDAO();
//让D层推断信息是否正确
Login.Model.UserInfo User = udao.SelectUser(user);
if (User == null)
{
//假设username错误,将提示用户
throw new Exception("username不对!");
}
else if (User.Flag==false)
{
throw new Exception("password错误,登陆失败!");
}
else
{
//成功登陆,返回用户信息
return User;
} <pre name="code" class="csharp" style="font-size: 18px; line-height: 25px; "> } }
class DBUtil
{
//连接数据库语句
public static string ConnString = @"server=localhost;Database=Login;User=sa;Password=123456;";
} UserDAO类 public class UserDAO
{
public Login.Model.UserInfo SelectUser(Login.Model.UserInfo user)
{
//连接数据库,验证信息
using (SqlConnection conn=new SqlConnection(DBUtil.ConnString))
{
SqlCommand cmd = conn.CreateCommand(); //用于处理数据库
//推断username是否存在
cmd.CommandText = @"SELECT * FROM USERS WHERE UserName=@UserName";
//获得查询语言
cmd.CommandType = CommandType.Text;
//加入查询语言中的參数
cmd.Parameters.Add(new SqlParameter("@UserName", user.UserName));
//cmd.Parameters.Add(new SqlParameter("@Password", user.Password));
conn.Open();
//查询并返回结果
SqlDataReader reader = cmd.ExecuteReader();
//声明一个返回实例,假设username不存就返回空实例
Login.Model.UserInfo User = null;
while (reader.Read())
{
//假设username存在,就验证password是否正确
if (User==null)
{
User=new Login.Model.UserInfo();
}
//假设password存在就返回用户信息
if (user.Password ==reader.GetString(2))
{
User.Flag = true; //用户password正确的标志
User.ID = reader.GetInt32(0);
User.UserName = reader.GetString(1);
User.Password = reader.GetString(2);
//假设邮箱不为空,则取出
if (!reader.IsDBNull(3))
{
User.Email = reader.GetString(3);
}
}
else
{
User.Flag = false; //用户password错误的标志
}
}
return User;
}
}
} public class UserInfo
{
public int ID { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public bool Flag;
}标签:
原文地址:http://www.cnblogs.com/gcczhongduan/p/4271793.html