ADO.NET(查询、属性扩展)

一、ADO.NET 融合面向对象的查询语句

1.只查询一条数据

//数据访问中的select方法
public stu select(string xuehao)
      {
          stu s = null;
          cmd.CommandText = "select *from stu where [email protected]";
          cmd.Parameters.Clear();
          cmd.Parameters.Add("@a", xuehao);
          conn.Open();
          SqlDataReader dr = cmd.ExecuteReader();
          if(dr.HasRows)
          {
              dr.Read();
              s = new stu();
              s.Xuehao=dr["xuehao"].ToString();
              s.Name=dr["name"].ToString();
              s.Banji = dr["banji"].ToString();
              s.Sex = Convert.ToBoolean(dr["sex"]);
              s.Bir = Convert.ToDateTime(dr["bir"]);
          }
          conn.Close();
          return s;

      }
C#代码:
Console.Write("请输入要查询的学号:");
           string ss=  Console.ReadLine();
            Console.WriteLine("学号" + "\t" + "姓名" + "\t" + "性别" + "\t" + "班级" + "\t" + "生日");
            stu a = sdata.select(ss);
            if(a!=null)
            {
                Console.WriteLine(a.Xuehao+"\t"+a.Name+"\t"+((a.Sex)?1:0)+"\t"+a.Banji+"\t"+a.Bir.ToString("yyyy-MM-dd"));
            }

2.查询所有语句

 数据访问中的代码:
public List<stu> Select()
      { //泛型集合,放置所有stu数据对象
          List<stu> list = new List<stu>();

          cmd.CommandText = "select *from stu";//查询语句
          conn.Open();//打开数据库
          SqlDataReader dr = cmd.ExecuteReader();//调用此方法用来查询
          if(dr.HasRows)//如果数据表中有数据
          {
              while(dr.Read())//循环读取全部数据
              {//每读取一行数据,就制作一个stus对象
                 stu s = new stu();
                  s.Xuehao = dr["xuehao"].ToString();
                  s.Name = dr["name"].ToString();
                  s.Banji = dr["banji"].ToString();
                  s.Sex = Convert.ToBoolean(dr["sex"]);
                  s.Bir = Convert.ToDateTime(dr["bir"]);
//注意,在循环中,将制作好的每一个对象,都放到集合中去
                  list.Add(s);
              }
          }
          conn.Close();//关闭数据库
          return list;
      }
C#代码部分:
List<stu> ulist = new studata().Select();
            if(ulist.Count>0)
            {
                foreach(stu s in ulist)//遍历
                {
                    Console.WriteLine(s.Xuehao + "\t" + s.Name + "\t" + ((s.Sex) ? 1 : 0) + "\t" + s.Banji + "\t" +s.Bir.ToString("yyyy-MM-dd"));
                }
            }
            Console.ReadLine();

二、小知识

1、程序的运行顺序和机制
卡断点
可以很好的处理程序中未知的BUG
并且可以很准确的找到BUG的位置

2、函数的抽象性
函数功能写的越少,那么这个函数能被应用的地方就越多

三、属性扩展**

处理:有外键关系时将代号化信息处理成原始文字,让用户可看懂的(粗略解释)

如:将性别返回的值true或false改为男或女

1.直接在实体类(如stu)中_sex私有变量再新建一个成员变量:

public string sexstr
{
get{return (_sex?"男":"女")}
}

2、

将Console.WriteLine(s.Xuehao + "\t" + s.Name + "\t" + ((s.Sex) ? 1 : 0) + "\t" + s.Banji + "\t" +s.Bir.ToString("yyyy-MM-dd"));中的
((s.Sex) ? 1 : 0) 改为s.sexstr.将表中的Users民族列显示的是民族代号处理成Nation表中的民族名称  需要在Users类里面扩展一个显示Nation名称的属性

Nation表在C#新建Nation实体类和Nationdata数据访问类
Nationdata类新建一个查询方法:
 public string Select(string code)
        {
            string end = "<无>";

            cmd.CommandText = "select *from Nation where [email protected]";
            cmd.Parameters.Clear();
            cmd.Parameters.Add("@a", code);

            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                dr.Read();
                end = dr["NationName"].ToString();
            }

            conn.Close();
            return end;
        }

再在Users内_Nation新建一个成员变量

 public string NationName//扩展的名族名称属性
        {
            get
            {
                NationData Ndata = new NationData();
                string end = Ndata.Select(_Nation);
                return end;
            }
        }
时间: 2024-11-07 16:00:54

ADO.NET(查询、属性扩展)的相关文章

0914 c#的遍历查询-属性扩展

c#的遍历查询 昨天我们的查询只能查询一条数据,查询的只是学号是输入的学号的那个同学的信息,今天我们看一下查看所有的信息 其实步骤跟昨天一样,只需要把查询出来的每个对象放入集合中,在program里面挨个输出来就行了 这是我们的函数,返回值返回一个泛型集合,数据类型就是我们对象的类型,没有长度. public List<xuesheng> select1()        {                                     List<xuesheng> li

ADO.NET面向对象 属性扩展

例:public class Users{ private bool _sex;public bool sex{get{_return _sex;}set{_sex=value}}public string sexx{get{return _sex?"男":"女";}} } 2public  class nation{private string  _Nationcode;public string nationcode{}public string _nation

ADO数据库访问类查询、属性扩展

1 数据库访问类查询 (1)查询一条 有参数:查询这条信息的主键: 有返回值:返回值是一个实体类: dr.read();执行一遍,读取这行信息并放进users类型中. ///返回users实体类类型 public users chayi(string name) { users u = null; com.CommandText = "select *from users where [email protected]"; com.Parameters.Clear(); com.Par

ADO.NET 数据访问类查询、属性扩展

今天,我首先在之前所做的人员管理系统的基础上,利用数据访问类进行了所有人员信息的查询. 主程序代码: List<Users> Ulist = new UsersData().Select(); if (Ulist.Count > 0)//判断是否包含语句 { foreach (Users u1 in Ulist)//遍历 { Console.WriteLine(u1.UserName + " " + u1.PassWord + " " + u1.N

linq组合查询时属性扩展问题

学习linq的过程中,做一个表格的条件查询并且分页显示.显示的出的数据需要经过属性拓展来实现将需要给用户看的值显示出来. 后台绑定数据时用的是上下文---- if(!ispostback){ using (DataClassesDataContext con = new DataClassesDataContext()) { List<Users> ulist = con.Users.ToList(); ; Repeater1.DataSource = ulist.Skip(0).Take(c

ADO.Net属性扩展

属性扩展 大体意思:有外键关系时将代号化信息处理成原始文字 如:Info表中的民族列显示的是民族代号处理成Nation表中的民族名称 需要在Info类里面扩展一个显示nation名称的属性 using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; namespace 实体类_数据访问类.App_Code { public cl

ado属性扩展

using System; using System.Collections.Generic; using System.Linq; using System.Text; using 属性扩展.Model; using 属性扩展.DataOperation; namespace 属性扩展 { class Program { static void Main(string[] args) { List<Score> list = new ScoreData().SelectAll(); fore

数据模型和数据访问类以及属性扩展和泛型集合

数据模型: 数据模型就是将一个表中一行的所有属性利用封装写到一个类里面,将数据表中的行数据组成一个同样结构的对象,方便使用. 1 public class Car 2 { 3 SqlConnection conn = null; 4 SqlCommand com = null; 5 public Car() 6 { 7 conn = new SqlConnection("server=.;database=ADOlianxi0425;user=sa;pwd=123;"); 8 com

实体类、数据访问类、属性扩展

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 实体类_数据访问类.App_Code { public class Users { private string _username; //封装 /// <summary> /// 用户名 /// </summary> public