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

Posted 小飛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 + "\\t" + a.Name + "\\t" + a.Sex + "\\t" +(Convert.ToDateTime(a.Birth)).ToString("yyyy年MM月dd日") + "\\t" + 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 + "\\t" + aa.Name + "\\t" + aa.Sex + "\\t" + (Convert.ToDateTime(aa.Birth)).ToString("yyyy年MM月dd日") + "\\t" + aa.Score );
            }

            Console.ReadLine();
        }
    }
}

 

 

泛型集合:

 

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

 

以上是关于ADO.Net创建数据模型和数据访问类及泛型集合的主要内容,如果未能解决你的问题,请参考以下文章

快速上手kotlin接口抽象类及泛型

ADO.NET(课程学习内容)

ado数据模型和数据访问类,泛型集合

C#日常C#泛型集合Dictionary<TKey, TValue>使用方法及泛型集合检查是否存在Key值

C#日常C#泛型集合Dictionary<TKey, TValue>使用方法及泛型集合检查是否存在Key值

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