zoukankan      html  css  js  c++  java
  • 三层架构与四大天王之——查

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

      1、UI层

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

            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 + "
    " + "用户姓名:" + User.UserName + "
    " + "用户password:" + User.Password + "
    " + "用户Email:" + User.Email;
            }
        }


        2、BLL层

        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层

            public Login.Model.UserInfo QueryDao(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));
    
                    conn.Open();
                    //查询并返回结果
                    SqlDataReader reader = cmd.ExecuteReader();
    
                    //声明一个返回实例
                    Login.Model.UserInfo User = new Login.Model.UserInfo();          
                    
                    try
                     {
                         //假设username存在。就返回用户信息
                         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层)要将写好的信装入信封(即将username传入实体)。然后交给邮递员(B层)处理,最后到达收信人(D层)手中。经过收信人的处理,将其回信(要返回的信息)再次装入信封(返回实体)。然后再由邮递员寄给我们,这样我们就能依据回信,做出对应的处理。

    当然。假设这个过程出现什么错误,邮递员也会告知我们,像这样,我们通过邮递员就行实现方便的交流,通过我们的合作就行将一个复杂的工作做得井然有序。因此,我相信。仅仅要我们大家一起努力,这个世界一定变得更加美好。






  • 相关阅读:
    windows系统切换jdk,修改java_home无效情况
    Cannot instantiate interface org.springframework.context.ApplicationListener
    MySQL分组查询获取每个学生前n条分数记录(分组查询前n条记录)
    ASP.NET Web API 使用Swagger生成在线帮助测试文档,支持多个GET
    EF TO MYSQL 无法查询中文的解决方法
    HttpWebRequest post请求获取webservice void数据信息
    This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms. 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分 解决方案
    MySQL 5.7.13解压版安装记录 mysql无法启动教程
    C# udpclient 发送数据断网后自动连接的方法
    汽车XX网站秒杀抢购代码
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7233585.html
Copyright © 2011-2022 走看看