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

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

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

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

数据库信息表:

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创建数据模型和数据访问类及泛型集合的更多相关文章

  1. ADO.NET 实体类和数据访问类

    SQL数据库字符串注入攻击:需要使用cmd.Parameters这个集合占位符: @key 代表这个位置用这个占位符占住了 Parameters这个集合中将此占位符所代表的数据补全 cmd.Param ...

  2. 将java类的泛型集合转换成json对象

    一般用extjs开发传输都是用json比较多,这个将来大家也许会用到... ConvertJsonUtils.java package com.sunweb.util.jsonfactory; imp ...

  3. DataTable填补了实体类返回泛型集合

    坤哥见我昨天找了一段代码,如下面: 略微解释下,这段代码时D层查询结束后,将datatable查询到的结果赋值给实体对象的属性,然后返回实体的过程.坤哥看了之后问我,假设实体有500多个属性,难道也要 ...

  4. DataTable填充实体类返回泛型集合

    昨天找坤哥看到我的一段代码.例如以下: 略微解释下,这段代码时D层查询结束后,将datatable查询到的结果赋值给实体对象的属性,然后返回实体的过程.坤哥看了之后问我.假设实体有500多个属性.难道 ...

  5. Model First:创建实体数据模型(ADO.NET 实体数据模型)

    Microsoft Entity Framework是一个对象关系映射工具(Object Relational Mapping ,O/RM)工具.它可以让你从一个数据库自动地生成数据接入层.实体框架免 ...

  6. 《MVC+EF》——用DBFirst创建ADO.NET实体数据模型和对象关系映射

    转载于:http://blog.csdn.net/zhoukun1008/article/details/50528145 现在越来越喜欢MVC了,不光是因为ITOO中用到了他,而是因为它里面包含了很 ...

  7. Visual 2015创建新项,缺少ADO.NET 实体数据模型的解决方法

    现在的某度查资料真的很麻烦,突然我自身的VS2015创建EF的时候找不到 ADO.NET 实体数据模型,但是使用CodeFrist是可以生成数据表的.所有特别郁闷. 打开界面如下 某度半天,都没有查出 ...

  8. vs212创建mvc3项目,添加ADO.NET实体数据模型时产生 XXXX.Desiger.cs 文件为空

    vs212创建mvc3项目,发现添加ADO.NET实体数据模型时,产生StoreDB.Desiger.cs文件为空 产生StoreDB.Desiger.cs文件为空 原因是,在vs2012中,添加AD ...

  9. Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源

    熟悉Entity Framework应该对以下图片不陌生,他就是ADO.NET实体数据模型向导:可以将数据库的表自动生成模型类,或者创建Code First的模型文件. 但是这个模型向导默认只显示微软 ...

随机推荐

  1. Android WebView清空缓存

    Android原生和H5混合开发,要求用户退出登录后清空H5所有的缓存: 1.清空Cookie CookieSyncManager.createInstance(context.getApplicat ...

  2. solr系统query检索词特殊字符的处理

    solr是基于 lucence开发的应用,如果query中带有非法字符串,结果很可能是检索出所有内容或者直接报错,所以你对用户的输入必须要先做处理.输入星号,能够检索出所有内容:输入加号,则会报错. ...

  3. lunix 集群,负载均衡,location

       nginx location语法: location支持的语法优先级: 复制代码location匹配顺序 #  www.s14hanju.com/1.location = / {  我是代码1} ...

  4. 【HQL】常用函数

    CONCAT_WS(separator, str1, str2,...) 多列转1列,以分割符分割 使用场景: 1.多列在一列显示: 2.多列转多行作为辅助,结合split和explode使用 SEL ...

  5. 2690036 - SAP HANA 2.0 SPS 03 Database Revision 034

    Symptom This is the SAP Release Note for SAP HANA 2.0 Database Revision 034 (2.00.034.00) of the SAP ...

  6. sqlserver数据库授权操作

    https://www.jb51.net/article/126432.htm 系统需求简介 最近一直在做高校云平台这个项目,我们小组做的是其中的一个子系统是成绩管理系统,不同于之前的开发方式,本次我 ...

  7. 浏览器和对象的dom属性

    1 DOM对象:var obj=document.getElementById('*'); obj.scrollWidth 是对象的实际内容的宽,不包边线宽度,会随对象中内容的多少改变(内容多了可能会 ...

  8. pl/sql学习笔记---马士兵教程38-48

    Procedure Language/Structure query Language 一.关于语言学习 1.数据类型 2.语法   通过例子来学习很快就能明白 set serverputout on ...

  9. Django 模板格式化日期

    在模板中格式化日期: {{ post.date|date:”Y-m-d H:i:s” }}

  10. 彻底关闭Windows Defender丨Win10

    关闭Windows Defender Win10正式版怎么关闭windows defender 首先关闭windows defender,因重启电脑后win10 会自动重启defender,所以需要禁 ...