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

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

上次我们说到了,如何利用三层架构去数据库中删除数据,这次我们就来谈谈如何去数据库中查找数据,其实在上篇文章中也涉及到了查找,但那是将整个表中的记录都显示出来,而我们这次来查找我们所需要的某一条记录。

  1、UI层

 首先是界面,还记得我们第一次添加的“王菲”的那条记录吗,今天我们就将它查出来

[csharp] view plaincopy技术分享技术分享
  1.     private void button1_Click(object sender, EventArgs e)  
  2.     {  
  3.         //实例化一个模型对象,用来向D层传递信息  
  4.         Login.Model.UserInfo user = new Login.Model.UserInfo();  
  5.         //实例化一个模型对象,用来从D层接受信息  
  6.         Login.Model.UserInfo User = new Login.Model.UserInfo();  
  7.   
  8.         //讲参数传给该对象  
  9.         user.UserName = txtUserName.Text.Trim();  
  10.   
  11.         //实例化B层  
  12.         UserQuery.BLL.QueryBLL  userQ = new UserQuery.BLL.QueryBLL ();  
  13.         try  
  14.         {  
  15.             //将该对象传给B层处理  
  16.             User = userQ.UserQuery(user);  
  17.         }  
  18.         catch(Exception ex)  
  19.         {  
  20.             MessageBox.Show(ex.Message);  
  21.             return;  
  22.         }  
  23.           
  24.   
  25.         txtInformation.Text = "用户ID:" + User.ID + "\r\n" + "用户姓名:" + User.UserName + "\r\n" + "用户密码:" + User.Password + "\r\n" + "用户Email:" + User.Email;  
  26.     }  
  27. }  



    2、BLL层

[csharp] view plaincopy技术分享技术分享
  1. public class QueryBLL  
  2. {  
  3.     public Login.Model.UserInfo UserQuery(Login.Model.UserInfo user)  
  4.     {  
  5.         //实例化D层  
  6.         UserQuery.DAL.QueryDAL UserQD = new UserQuery.DAL.QueryDAL();  
  7.         //实例化用户  
  8.         Login.Model.UserInfo User = new Login.Model.UserInfo();  
  9.         try  
  10.         {  
  11.             //让D层判断信息是否正确  
  12.             User = UserQD.QueryDao(user);  
  13.         }  
  14.         catch(Exception ex)  
  15.         {  
  16.             throw ex;//将错误信息抛给U层  
  17.         }  
  18.          
  19.         //返回用户信息  
  20.         return User;  
  21.           
  22.     }  
  23. }  

    3、DAL层

 

[csharp] view plaincopy技术分享技术分享
  1. public Login.Model.UserInfo QueryDao(Login.Model.UserInfo user)  
  2. {  
  3.      using (SqlConnection conn=new SqlConnection(DBUtil.ConnString))  
  4.     {  
  5.         SqlCommand cmd = conn.CreateCommand();      //用于处理数据库  
  6.   
  7.         //判断用户名是否存在  
  8.         cmd.CommandText = @"SELECT * FROM USERS WHERE UserName=@UserName";  
  9.           
  10.         //获得查询语言  
  11.         cmd.CommandType = CommandType.Text;  
  12.   
  13.         //添加查询语言中的参数  
  14.         cmd.Parameters.Add(new SqlParameter("@UserName", user.UserName));  
  15.   
  16.         conn.Open();  
  17.         //查询并返回结果  
  18.         SqlDataReader reader = cmd.ExecuteReader();  
  19.   
  20.         //声明一个返回实例  
  21.         Login.Model.UserInfo User = new Login.Model.UserInfo();            
  22.           
  23.         try  
  24.          {  
  25.              //如果用户名存在,就返回用户信息  
  26.              if (reader.Read())  
  27.              {  
  28.                  //获取用户信息  
  29.                 User.ID = reader.GetInt32(0);  
  30.                 User.UserName = reader.GetString(1);  
  31.                 User.Password = reader.GetString(2);  
  32.   
  33.                 //如果邮箱不为空,则取出  
  34.                 if (!reader.IsDBNull(3))  
  35.                 {  
  36.                     User.Email = reader.GetString(3);  
  37.                 }  
  38.              }  
  39.              else  
  40.              {  
  41.                  //如果不存在,就抛出错误  
  42.                  throw new Exception("该用户不存在!");    
  43.              }  
  44.             //断开连接  
  45.              conn.Close();  
  46.          }  
  47.         catch (Exception ex)  
  48.         {  
  49.             throw ex;  //将错误信息抛给D层处理  
  50.         }  
  51.         return User;  //返回用户信息  
  52.     }  
  53. }  

    4、结果

    5、小结

      这次简单的查询过程就跟寄信似的,首先我们(U层)要将写好的信装入信封(即将用户名传入实体),然后交给邮递员(B层)处理,最后到达收信人(D层)手中,经过收信人的处理,将其回信(要返回的信息)再次装入信封(返回实体),然后再由邮递员寄给我们,这样我们就能根据回信,做出相应的处理。当然,如果这个过程出现什么错误,邮递员也会告知我们,像这样,我们通过邮递员就能够实现方便的交流,通过我们的合作就可以将一个复杂的工作做得井然有序。因此,我相信,只要我们大家一起努力,这个世界一定变得更加美好。


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