首页 > 代码库 > 三层架构与四大天王之——查
三层架构与四大天王之——查
上次我们说到了,如何利用三层架构去数据库中删除数据,这次我们就来谈谈如何去数据库中查找数据,其实在上篇文章中也涉及到了查找,但那是将整个表中的记录都显示出来,而我们这次来查找我们所需要的某一条记录。
1、UI层
首先是界面,还记得我们第一次添加的“王菲”的那条记录吗,今天我们就将它查出来
[csharp] view plaincopy
- private void button1_Click(object sender, EventArgs e)
- {
- //实例化一个模型对象,用来向D层传递信息
- Login.Model.UserInfo user = new Login.Model.UserInfo();
- //实例化一个模型对象,用来从D层接受信息
- Login.Model.UserInfo User = new Login.Model.UserInfo();
- //讲参数传给该对象
- user.UserName = txtUserName.Text.Trim();
- //实例化B层
- UserQuery.BLL.QueryBLL userQ = new UserQuery.BLL.QueryBLL ();
- try
- {
- //将该对象传给B层处理
- User = userQ.UserQuery(user);
- }
- catch(Exception ex)
- {
- MessageBox.Show(ex.Message);
- return;
- }
- txtInformation.Text = "用户ID:" + User.ID + "\r\n" + "用户姓名:" + User.UserName + "\r\n" + "用户密码:" + User.Password + "\r\n" + "用户Email:" + User.Email;
- }
- }
2、BLL层
[csharp] view plaincopy
- public class QueryBLL
- {
- public Login.Model.UserInfo UserQuery(Login.Model.UserInfo user)
- {
- //实例化D层
- UserQuery.DAL.QueryDAL UserQD = new UserQuery.DAL.QueryDAL();
- //实例化用户
- Login.Model.UserInfo User = new Login.Model.UserInfo();
- try
- {
- //让D层判断信息是否正确
- User = UserQD.QueryDao(user);
- }
- catch(Exception ex)
- {
- throw ex;//将错误信息抛给U层
- }
- //返回用户信息
- return User;
- }
- }
3、DAL层
[csharp] view plaincopy
- public Login.Model.UserInfo QueryDao(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();
- try
- {
- //如果用户名存在,就返回用户信息
- if (reader.Read())
- {
- //获取用户信息
- 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
- {
- //如果不存在,就抛出错误
- throw new Exception("该用户不存在!");
- }
- //断开连接
- conn.Close();
- }
- catch (Exception ex)
- {
- throw ex; //将错误信息抛给D层处理
- }
- return User; //返回用户信息
- }
- }
4、结果
5、小结
这次简单的查询过程就跟寄信似的,首先我们(U层)要将写好的信装入信封(即将用户名传入实体),然后交给邮递员(B层)处理,最后到达收信人(D层)手中,经过收信人的处理,将其回信(要返回的信息)再次装入信封(返回实体),然后再由邮递员寄给我们,这样我们就能根据回信,做出相应的处理。当然,如果这个过程出现什么错误,邮递员也会告知我们,像这样,我们通过邮递员就能够实现方便的交流,通过我们的合作就可以将一个复杂的工作做得井然有序。因此,我相信,只要我们大家一起努力,这个世界一定变得更加美好。
三层架构与四大天王之——查
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。