zoukankan      html  css  js  c++  java
  • 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遍历

  • 相关阅读:
    微信开放平台:OpenAPI、云开发与基础管理能力升级
    腾讯刘颖:从容器到低代码,腾讯云原生技术演进历程
    十年老站长心声:我为什么选择把 Hexo 网站迁移到 Webify
    腾讯云发布微搭生态开放计划,与合作伙伴携手共创产业未来
    SQL Server附加数据库出现错误5123的正确解决方法
    数据分页获取(二)
    Select语句
    数据分页获取(一)
    SQL Server中行转列原理
    QT实现Linux下系统监控小工具之二
  • 原文地址:https://www.cnblogs.com/zyg316/p/5612835.html
Copyright © 2011-2022 走看看