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的模型文件. 但是这个模型向导默认只显示微软 ...
随机推荐
- requests模块报错:Use body.encode('utf-8') if you want to send it encoded in UTF-8.
在做 企业向微信用户个人付款 功能时,调用第三方sdk,在 进行 requests 的post请求时, 代码如下 req = requests.post(url, data=data,cert(ap ...
- angularjs中ng-repeat插入图片
<tr ng-repeat="item in datas" ng-module="datas"> <td> <img class ...
- mac中svn服务器的搭建以及如何在eclipse中使用
mac自带了svn客户端和服务端功能. 1.查看svn版本 svnserve --version yintingtingdeMacBook-Pro:~ yintingting$ svnserve -- ...
- 自动创建表出错 type=InnDB
因为type=InnoDB在5.0以前是可以使用的,但5.1之后就不行了 只需要修改配置: hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDia ...
- Application failed to start because it could not find or load the QT platform plugin “windows”
只需要在.exe所在的目录下创建一个目录platforms添加进去缺失的dll即可如图: 参考链接:https://stackoverflow.com/questions/21268558/appli ...
- Java执行js代码
在做项目中有时候需要用到Java调用js文件执行相应的方法 在JDK1.6添加了新的ScriptEngine类,允许用户直接执行js代码. import org.junit.Test; import ...
- GPUImage中饱和度调整的实现——GPUImageSaturationFilter
饱和度saturation,是指色彩的鲜艳程度,也称色彩的纯度.饱和度取决于该色中含色成分和消色成分(灰色)的比例.含色成分越大,饱和度越大:消色成分越大,饱和度越小.纯的颜色都是高度饱和的,如鲜红, ...
- 使用RecyclerView打造Gallery
RecyclerView概述 RecyclerView是谷歌推出的用于向大型数据集提供有限窗口的灵活视图.可以通过导入support-v7对其进行使用. 据官方的介绍,该控件用于在有限的窗口中展示大量 ...
- Spring Cloud (6)config 客户端配置 与GitHub通信
1. 配置yml 1.1 1.2 1.3 2. 提交yml 到git 3.新建项目 pom 4.新建bootstrap.yml (优先权比application.yml高) 5.bootstrap.y ...
- element UI select 设定默认值
要为select设定默认值,有两个步骤 1.数据中,声明一个变量param:该变量的值设为你想设定的select option中value 2.控件的 v-model 绑定 param 即可 < ...