ADO.Net创建数据模型和数据访问类及泛型集合

数据模型和数据访问类:
数据模型:
使用面向对象中的封装特性,将数据表中的行数据组成一个同样结构的对象,来单独使用;

数据访问类:
将某一个表的全部增删改查操作的方法写进去,方便统一管理和调用;

数据模型和数据访问类单独创建两个文件件单独放置,方便查看;
注意:单独创建的问题件命名空间会自动更改,调用时需要引用命名空间,并且在创建类时第一步
要把类的访问权限设置为公开的

创建一个数据库模型和一个数据库访问类,对学生信息表进行简单的操作

数据库信息表:

create database netlx
go
use netlx
go

create table stu
(
   code nvarchar(50)primary key,
   name nvarchar(50),
   sex nvarchar(10),
   birth datetime,
   score decimal(10,2)
)

insert into stu values('s101','张三','','1995-3-2',99)
insert into stu values('s102','李四','','1995-4-2',89)
insert into stu values('s103','王五','','1994-3-8',95)
insert into stu values('s104','赵六','','1993-8-4',79)
insert into stu values('s105','小红','','1996-5-11',68)
insert into stu values('s106','张全蛋','','1994-3-2',59)
insert into stu values('s107','李三','','1993-9-2',90)
insert into stu values('s108','赵红','','1995-6-2',89)
insert into stu values('s109','王九','','1994-3-8',97)

数据库模型类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 数据库模型和数据库访问类.类对象
{
    //先建立数据模型类
    //数据模型就是将一个表中一行的所有属性利用封装写到一个类里面,
    //将数据表中的行数据组成一个同样结构的对象,方便使用
    public class fangfa //将数据库表的数据建立成一个类的形式
    {
        private string _Code;
        /// <summary>
        /// 学号
        /// </summary>
        public string Code 
        {
            get { return _Code; }
            set { _Code = value; }
        }
        private string _Name;
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        private string _Sex;
        /// <summary>
        /// 性别
        /// </summary>
        public string Sex
        {
            get { return _Sex; }
            set { _Sex = value; }
        }
        private DateTime _Birth;
        /// <summary>
        /// 生日
        /// </summary>
        public DateTime Birth
        {
            get { return _Birth; }
            set { _Birth = value; }
        }
        private decimal _Score;
        /// <summary>
        /// 成绩
        /// </summary>
        public decimal Score
        {
            get { return _Score; }
            set { _Score = value; }
        }
    }
}

数据库访问类:

using System.Text;
using System.Data.SqlClient;
using 数据库模型和数据库访问类.类对象;//这个类使用到了模型类,需要引用命名空间
namespace 数据库模型和数据库访问类.连接数据库
{
    //数据访问类:
    //数据访问类是在一个类中写下某一个表的增删改查操作的方法,方便统一管理和调用


    public class shujuku
    {
        SqlConnection conn = null;//此处数据连接与操作为空,只定义了变量
        SqlCommand cmd = null;

        public shujuku()//在构造函数中给数据库访问变量进行了赋值,以便于调用这个类时便执行数据库连接操作
        {
            conn=new SqlConnection("server=.;database=netlx;user=sa;pwd=123");
            cmd=conn.CreateCommand();
        }

        /// <summary>
        /// 查询数据库信息
        /// </summary>
        /// <returns></returns>
        public List<fangfa> chaxun() //建立一个函数方法,将数据库模型类里的对象放进泛型集合
        {
            List<fangfa> list = new List<fangfa>();//实例化集合,以便于调用里面对象里的属性
            cmd.CommandText = "select * from stu";//数据操作指令,此处是SQL语句编写
            conn.Open();//打开数据库
            SqlDataReader dr = cmd.ExecuteReader();//执行读取操作,此处将SQL语句在数据库执行后的数据进行读取
            if (dr.HasRows) //变量的dr接收的是读取数据库结果,如果成功读取到了内容
            {
                while (dr.Read()) //便执行这一步
                {
                    fangfa js = new fangfa();//实例化一下数据库模型类,开辟一个内存空间,以便于调用此类里的属性
                    js.Code = dr["code"].ToString();//点出模型类里面的各属性,将读取的数据分别放入里面
                    js.Name = dr["name"].ToString();
                    js.Sex = dr["sex"].ToString();
                    js.Birth = Convert.ToDateTime(dr["birth"]);
                    js.Score = Convert.ToDecimal(dr["score"]);

                    list.Add(js);//循环将接收的每一条数据放进泛型集合
                }
            }
            conn.Close();//关闭数据库
            return list;//将集合内放置的所有数据返回出去
        }
        /// <summary>
        /// 条件查询数据库信息
        /// </summary>
        /// <param name="name">参数</param>
        /// <returns>返回值</returns>
        public List<fangfa> cx(string name) //此操作和查询一样,只是多了一个参数,根据获取的参数到
        {                                  //数据库进行查询,最后将查询的结果放进泛型集合返回去
            List<fangfa> li = new List<fangfa>();
            cmd.CommandText = "select * from stu where name like @name";
            cmd.Parameters.Clear();
            cmd.Parameters.Add("@name","%"+name+"%");
            conn.Open();
            SqlDataReader dq = cmd.ExecuteReader();
            if (dq.HasRows) 
            {
                while (dq.Read()) 
                {
                    fangfa ff = new fangfa();
                    ff.Code = dq["code"].ToString();
                    ff.Name = dq["name"].ToString();
                    ff.Sex = dq["sex"].ToString();
                    ff.Birth = Convert.ToDateTime(dq["birth"]);
                    ff.Score = Convert.ToDecimal(dq["score"]);

                    li.Add(ff);
                }
            }
            conn.Close();
            return li;
        }
    }
}

项目:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using 数据库模型和数据库访问类.类对象;//命名空间的引用,才可以调用到类中的属性方法
using 数据库模型和数据库访问类.连接数据库;
namespace 数据库模型和数据库访问类
{
    class Program
    {
        static void Main(string[] args)
        {
            List<fangfa> data = new shujuku().chaxun();//实例化
            foreach (fangfa a in data) 
            {
                Console.WriteLine(a.Code + "	" + a.Name + "	" + a.Sex + "	" +(Convert.ToDateTime(a.Birth)).ToString("yyyy年MM月dd日") + "	" + a.Score );
            }
            Console.WriteLine();
            Console.WriteLine();
            Console.Write("请输入要查询的学生姓名或者姓名关键字:");
            string nname = Console.ReadLine();
            data = new shujuku().cx(nname);

            foreach (fangfa aa in data) 
            {
                Console.WriteLine(aa.Code + "	" + aa.Name + "	" + aa.Sex + "	" + (Convert.ToDateTime(aa.Birth)).ToString("yyyy年MM月dd日") + "	" + aa.Score );
            }

            Console.ReadLine();
        }
    }
}

泛型集合:

List<T> T代表泛型,你给它什么类型,它就代表什么类型
定义:
List<string> li = new List<string>();
实例化什么类型的泛型集合,那么这个集合中就只能放这一种类型的变量或对象
添加数据:
li.Add(数据/变量/对象);
查询:
foreach遍历

原文地址:https://www.cnblogs.com/zyg316/p/5612835.html