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创建数据模型和数据访问类及泛型集合的更多相关文章
- ADO.NET 实体类和数据访问类
SQL数据库字符串注入攻击:需要使用cmd.Parameters这个集合占位符: @key 代表这个位置用这个占位符占住了 Parameters这个集合中将此占位符所代表的数据补全 cmd.Param ...
- 将java类的泛型集合转换成json对象
一般用extjs开发传输都是用json比较多,这个将来大家也许会用到... ConvertJsonUtils.java package com.sunweb.util.jsonfactory; imp ...
- DataTable填补了实体类返回泛型集合
坤哥见我昨天找了一段代码,如下面: 略微解释下,这段代码时D层查询结束后,将datatable查询到的结果赋值给实体对象的属性,然后返回实体的过程.坤哥看了之后问我,假设实体有500多个属性,难道也要 ...
- DataTable填充实体类返回泛型集合
昨天找坤哥看到我的一段代码.例如以下: 略微解释下,这段代码时D层查询结束后,将datatable查询到的结果赋值给实体对象的属性,然后返回实体的过程.坤哥看了之后问我.假设实体有500多个属性.难道 ...
- Model First:创建实体数据模型(ADO.NET 实体数据模型)
Microsoft Entity Framework是一个对象关系映射工具(Object Relational Mapping ,O/RM)工具.它可以让你从一个数据库自动地生成数据接入层.实体框架免 ...
- 《MVC+EF》——用DBFirst创建ADO.NET实体数据模型和对象关系映射
转载于:http://blog.csdn.net/zhoukun1008/article/details/50528145 现在越来越喜欢MVC了,不光是因为ITOO中用到了他,而是因为它里面包含了很 ...
- Visual 2015创建新项,缺少ADO.NET 实体数据模型的解决方法
现在的某度查资料真的很麻烦,突然我自身的VS2015创建EF的时候找不到 ADO.NET 实体数据模型,但是使用CodeFrist是可以生成数据表的.所有特别郁闷. 打开界面如下 某度半天,都没有查出 ...
- vs212创建mvc3项目,添加ADO.NET实体数据模型时产生 XXXX.Desiger.cs 文件为空
vs212创建mvc3项目,发现添加ADO.NET实体数据模型时,产生StoreDB.Desiger.cs文件为空 产生StoreDB.Desiger.cs文件为空 原因是,在vs2012中,添加AD ...
- Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源
熟悉Entity Framework应该对以下图片不陌生,他就是ADO.NET实体数据模型向导:可以将数据库的表自动生成模型类,或者创建Code First的模型文件. 但是这个模型向导默认只显示微软 ...
随机推荐
- 分布式系统的Raft算法
好东西~~ 英文动画演示Raft 过去, Paxos一直是分布式协议的标准,但是Paxos难于理解,更难以实现,Google的分布式锁系统Chubby作为Paxos实现曾经遭遇到很多坑. 来自Stan ...
- websocket如何设置?
根据之前写的步骤到当前的websocket设置 一.websocket设置: 1)在线程租下右键单击选择Sampler如图: 2)进行它的设置 2.保存 3.添加查看结果数和聚合报告(此处不详细说明, ...
- jmeter关联Websocket包支持
消息文本发送内容采用的是websocket方式进行消息握手的,一次使用到WEBSOCKET包支持 对于它的介绍和使用如下: 一.首先,我们需要准备Jmeter的WebSocket协议的支持插件:JMe ...
- [java,2018-01-16] HttpClient发送、接收 json 请求
最近需要用到许多在后台发送http请求的功能,可能需要发送json和xml类型的数据. 就抽取出来写了一个帮助类: 首先判断发送的数据类型是json还是xml: import org.dom4j.Do ...
- SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
- [转]ORA-12560: TNS: 协议适配器错误
转自:http://worms.blog.51cto.com/969144/1293265 Sqlplus 登陆oracle时报错ORA-12560:TNS: 协议适配器错误 如下:C:\Users\ ...
- StringBuffer 清除内容
在开发的时候,经常使用StringBuffer来进行字符串的拼接.如果反复的做字符串拼接时,有时需要清空Stringbuffer中的内容,然后再拼接新的字符串信息. StringBuffer提供了以下 ...
- 18.纯 CSS 创作 404 文字变形为 NON 文字的交互特效
原文地址:https://segmentfault.com/a/1190000014818274 感想: positon:absolute 和 :hover HTML代码: <!-- < ...
- 函数getpass
函数getpass为python自带函数,作用是使用户输入的内容不可见 1 # -*- coding:utf-8 -*- 2 import getpass 3 a = raw_input(" ...
- python中的insert
insert()往列表的指定位置添加元素,举个例子: 1 a = ["hello", "world", "dlrb"] 2 a.insert ...