数据模型和数据访问类:
数据模型:
使用面向对象中的封装特性,将数据表中的行数据组成一个同样结构的对象,来单独使用;
数据访问类:
将某一个表的全部增删改查操作的方法写进去,方便统一管理和调用;
数据模型和数据访问类单独创建两个文件件单独放置,方便查看;
注意:单独创建的问题件命名空间会自动更改,调用时需要引用命名空间,并且在创建类时第一步
要把类的访问权限设置为公开的
创建一个数据库模型和一个数据库访问类,对学生信息表进行简单的操作
数据库信息表:
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遍历
时间: 2024-12-29 12:01:05