• 扩展实体类的使用


    需求:

    上图中,如果我们想用实体类来实现的话,明显实现不了

    原因很简单,要显示的数据包含的三张表(Student,Subject,Result)中的数据

    我们无法单纯的用某个实体类来解决,这时我们就可以扩展实体类来解决这个问题

    我们可添加ResultBusiness类继承Result实体类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace MySchool.Model
    {
        //拓展类  继承Result实体类
       public class ResultBusiness:Result
        {
           //多定义两个属性(达到目的)
           //学生姓名
           public string StudentName { get; set; }
           //科目名
           public string SubjectName { get; set; }
        }
    }

    这样我们就可以使用ResultBusiness类来实现目的

    方法:

    public List<ResultBusiness> ReviewStudentResult2(int subjectId, string name)
          {
              List<ResultBusiness> list = new List<ResultBusiness>();
              // List<Result> list = new List<Result>();
              //创建SQl
              StringBuilder sb = new StringBuilder();
              sb.Append("select * from Result,Student,Subject where Result.StudentNo=Student.studentNo and Subject.SubjectId=Result.SubjectId ");
              if (subjectId != -1)
              {
                  sb.Append("and Result.SubjectId=@SubjectId ");
              }
              if (!string.IsNullOrEmpty(name))
              {
    
                  sb.Append("and Student.StudentName like +  '%'+@Studentname+'%'");
              }
              SqlParameter[] para =
              {
                  new SqlParameter("@SubjectId",subjectId),
                  new SqlParameter("@Studentname",name)
              };
              SqlConnection con = new SqlConnection(Constr);
              SqlCommand cmd = new SqlCommand(sb.ToString(), con);
              cmd.Parameters.AddRange(para);
              con.Open();
              SqlDataReader dr = cmd.ExecuteReader();
    
              while (dr.Read())
              {
    
                  ResultBusiness result = new ResultBusiness();
                  result.StudentName = dr["StudentName"].ToString();
                  result.SubjectName = dr["SubjectName"].ToString();
                  result.StudentNo = Convert.ToInt32(dr["StudentNo"].ToString());
                  result.StudentResult = Convert.ToInt32(dr["StudentResult"].ToString());
                  result.SubjectId = Convert.ToInt32(dr["SubjectId"].ToString());
                  result.ExamDate = Convert.ToDateTime(dr["ExamDate"].ToString());
                  list.Add(result);
              }
    
    
              con.Close();
              dr.Close();
              return list;
          }

    调用:

     public void Three()
            {
                string Name = txtName.Text;
                int grade = Convert.ToInt32(cboGrade.SelectedValue);
                List<ResultBusiness> list = resultbll.ReviewStudentResult2(grade, Name);
                dgvResult.DataSource = list;
            }
  • 相关阅读:
    js基础
    装饰模式,代理模式,继承
    Retrofit源码解析
    Android Studio自定义Plugin
    EMV笔记:持卡人认证(CVM)
    阿里代码规范笔记
    文章博客网址收集
    MultiDex解析
    EMV随记(1)
    RSA笔记
  • 原文地址:https://www.cnblogs.com/zhangzongle/p/5334042.html
Copyright © 2020-2023  润新知