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.Parameters.Add("@name",name);
            conn.Open();
            SqlDataReader dr = com.ExecuteReader();
            if (dr.HasRows)///判断是否有信息
            {
                ///读取这行信息并放进users类型中
                dr.Read();
                u = new users();///实例化
                u.uname = dr[0].ToString();
                u.umima = Convert.ToInt32(dr[1].ToString());
                u.unicheng = dr[2].ToString();
                u.usex = Convert.ToBoolean(dr[3].ToString());
                u.ubir = Convert.ToDateTime(dr[4].ToString());
                u.uzu = dr[5].ToString();
            }

            conn.Close();
            return u;
        }   

(2)查询所有

无参数;

有返回值:将返回的值放进泛型集合;

dr.read();循坏读取,每读取一遍,将这行数据放入一个实体类,再把这个实体类放进泛型集合。

///返回类型 泛型集合
        public List<users> chasuo()
        {
        List<users> list=new List<users>();///实例化泛型集合
        users u = null;
        com.CommandText = "select * from users";
        conn.Open();
        SqlDataReader dr = com.ExecuteReader();
        if(dr.HasRows)///判断是否有信息
        {
            while(dr.Read())//循环读取,每次一行
            {
                ///将每行数据放入实体类
                u = new users();///实例化实体类
                u.uname = dr[0].ToString();
                u.umima =Convert.ToInt32(dr[1].ToString());
                u.unicheng = dr[2].ToString();
                u.usex = Convert.ToBoolean(dr[3].ToString());
                u.ubir =Convert.ToDateTime( dr[4].ToString());
                u.uzu = dr[5].ToString();
                list.Add(u); ///将一个实体类放入泛型集合
            }
        }
        conn.Close();
        return list;
        }

 遍历集合显示所有信息,每遍历一次显示一行。 

            List<users> list1 = ud.chasuo();//调用查询所有的函数
            Console.WriteLine("姓名" + "\t" + "密码" + "\t" + "昵称" + "\t" + "性别" + "\t" + "出生日期" + "\t" + "民族");
            if(list1.Count>0)
            {
            foreach(users  u1 in list1)//遍历集合
            {

                Console.WriteLine(u1.uname + "\t" + u1.umima +"\t" + u1.unicheng + "\t" + u1.usexget + "\t" + u1.ubirget+"\t" + u1.uzuget);
            }
            }

  

2 属性扩展

(1)实体类中的成员变量加上一个只读属性,可使显示内容达到我们真正想显示的

private bool _usex;//私有成员变量
        public bool usex //成员变量的属性(可读可写)
        {
            get { return _usex; }
            set { _usex = value; }
        }
        public string usexget //成员变量的属性(只读)
        {
            get { return _usex ? "男" : "女"; }//可使显示的内容是"男"或"女",而不是bool类型。
}

(2)可将具有外键关系的列显示内容而不是代号

A 先将外键连接的表写成两个类:实体类,数据访问类。

数据访问类 包含一个查询函数:参数是 <外关键字>,返回值是<我们需要显示的内容>。

B 实体类中外关键字加一个只读属性

属性中调用外键连接的表数据访问类的查询函数,显示时可将代号改成内容。

       private string _uzu ;//私有成员变量
        public string uzu//成员变量的属性(可读可写)
        {
            get { return _uzu; }
            set { _uzu = value; }
        }
        public string uzuget //成员变量的属性(只读)
        {
            get
            {
                mingzudata mz = new mingzudata();
                string mn = mz.cha(_uzu).Mname;//调用外键连接表数据访问类的查询函数
                return mn;
            }

        }
时间: 2024-08-07 17:02:18

ADO数据库访问类查询、属性扩展的相关文章

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

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

YbSoftwareFactory 代码生成插件【十九】:实体类配合数据库表字段进行属性扩展的小技巧

实体类通常需要和数据库表进行了ORM映射,当你需要添加新的属性时,往往同时也需要在数据库中添加相应的字段并配置好映射关系,同时可能还需对数据访问组件进行重新编译和部署才能有效.而当你开始设计一个通用数据访问组件后,因为项目需求的不同和需求的不断变化演变,很难不能保证不会再添加额外的属性和字段.特别是项目部署运行后,添加一个属性和字段带来的额外维护的工作量可能要远远超过对代码进行调整的工作量.本文提供了属性字段扩展的一种思路,在满足核心字段可通过实体类强类型进行访问的同时,还可通过C# 4.0提供

我也来写:数据库访问类DBHelper

一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以很好的工作.ADO.NET已经封装很好了,我们很容易就可以实现自己的数据库访问类. 很久前,忘记在哪里看到过了,有一个朋友写了一篇[如何做一个好用的数据库访问类](有兴趣的朋友仍然可以搜索到),这篇文章确实写得很好,作者很详细的讲解了如何设计一个好的数据库访问类:所谓“好“是指:轻量.易用.通用.高

我也来写:数据库访问类DBHelper(转)

一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以很好的工作.ADO.NET已经封装很好了,我们很容易就可以实现自己的数据库访问类. 很久前,忘记在哪里看到过了,有一个朋友写了一篇[如何做一个好用的数据库访问类](有兴趣的朋友仍然可以搜索到),这篇文章确实写得很好,作者很详细的讲解了如何设计一个好的数据库访问类:所谓“好“是指:轻量.易用.通用.高

DataAccess通用数据库访问类,简单易用,功能强悍

以下是我编写的DataAccess通用数据库访问类,简单易用,支持:内联式创建多个参数.支持多事务提交.支持参数复用.支持更换数据库类型,希望能帮到大家,若需支持查出来后转换成实体,可以自行扩展datarow转实体类,也可以搭配dapper.net实现更强大的功能. /// <summary> /// 通用数据库访问类,支持多种数据库,无直接依赖某个数据库组件 /// 作者:左文俊 /// 日期:2016-6-3 /// </summary> public class DataAc

学习实践:使用模式,原则实现一个C++数据库访问类

一.概述 在我参与的多个项目中,大家使用libMySQL操作MySQL数据库,而且是源码即复用,在多个项目中有多套相同或相似的源码,这样的复用方式给开发带来了不变,而且libMySQL的使用比较麻烦,要应对很多的细节,很容易出错. 我要写一个动态链接库,将对libMySQL的操作封装起来,以二进制复用代替源码级复用:要提供线程安全的接口,用户无需关系是否加锁这样细节性的问题,减少出错及死锁的机会,当然也要允许用户自己选择是否线程安全的访问数据库:要简化访问数据库的流程,接口越简单越好. 我从20

我的C++数据库访问类

一.概述 在我参与的多个项目中,大家使用libMySQL操作MySQL数据库,而且是源码即复用,在多个项目中有多套相同或相似的源码,这样的复用方式给开发带来了不变,而且libMySQL的使用比较麻烦,要应对很多的细节,很容易出错. 我要写一个动态链接库,将对libMySQL的操作封装起来,以二进制复用代替源码级复用:要提供线程安全的接口,用户无需关系是否加锁这样细节性的问题,减少出错及死锁的机会,当然也要允许用户自己选择是否线程安全的访问数据库:要简化访问数据库的流程,接口越简单越好. 我从20

Java知多少(111)几个重要的java数据库访问类和接口

修改数据表记录也有3种方案. 一.使用Statement对象 实现修改数据表记录的SQL语句的语法是:    update表名 set 字段名1 = 字段值1,字段名2 = 字段值2,……where特定条件例如: update ksInfo set 姓名 = ‘张小卫’where 姓名 = ‘张大卫’ 先创建一个SQL语句,然砶调用Statement对象的executeUpdate()方法.例如, 1 sql = “update ksInfo set 姓名 = ‘”+txtName.getTex

公共的数据库访问类(全面)

比较全面的数据库访问类 using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Collections; namespace DotNet.Utilities { /// <summary> /// /// 此类为抽象类, /// 不允许实例化,在应用时直接调用即可 /// </summar