学生管理系统(简易)7/26

实体层在三层架构中的地位:sql

1.实体对象其实是对应着数据库里的每张表的,咱们把表里的字段封装在1个实体对象里 当你想用哪一个字段 你就就经过该实体对象的get() set() 把那个字段提取出来 这比你临时建立1个变量要灵活的多 并且便于程序的维护和扩展.在实际的3层结构开发中,专门有个实体层,他的做用就是便于层和层之间的数据传递 ;数据库

2.实体体现了面向对象程序开发的思想,把大量的数据进行封装 而后传递.固然 若是只是1,2个参数,那么传递实体或者传递变量均可以 。c#

好比你想查询某个学号的学生信息,那么你彻底就能够以ID为参数传下去 就不必把他再封装到实体对象里;数组

 

值与引用的区别:架构

将一个变量做为参数进行传递,本质是传栈空间的存储内容;框架

 

if (reader.Read()){  per = new MODEL.Person(); ** // 若是有数据,就建立对象,一行数据就对应着 一个实体类对象 }//读取一行记录,从第一行开始,if()的做用是最多一行数据  函数

  

 return comm.ExecuteReader(CommandBehavior.CloseConnection);//中的CommandBehavior.CloseConnection  能够用做关闭通道的用途;spa

 

从数据库表中读取的数据到c#里面都会被作一层封装:1.若是是具体的值,就封装为object, 若是是null值就被封装为DBNull,这种类型的值不方便用户后期操做,因此咱们须要将这些类型的值转换为面向对象的数据---实体类对象,同时要明确,一行数据就对应着一个实体类对象,对象里面,包含了,name,cid....这些列内容,再将取出来的数据,object转换成值类型;对象

例:ci

per.name=reader["name"].tostring();

 

params 构造函数声明数组 而不知道数组长度 用的
在方法声明中的 params 关键字以后不容许任何其余参数,而且在方法声明中只容许一个 params 关键字。

params是指可变参数,它会根据调用方法的实参值生成一具对应长度的数组,如:没有传递实参值,那么就至关于SqlParameter[] p=new SqlParameter[0];若是传递了参数,那么就至关于SqlParameter[] p=new SqlParameter[]{p,p2,p3,p4};强调:params只能修饰数组

通常是存在于方法声明当中

例如: public static void UseParams(params int[] list){}

        public static void UseParams2(params object[] list) {}

        public static SqlDataReader ExecuteReader(string sql,params SqlParameter[] ps){}

注意:

cmd.Parameters的Add方法是增长一个参数,增长多个参数的的时候使用一个foreach循环而已

cmd.Parameters的AddRange方法是增长一个参数的数组

 

配置文件的应用:

引用中选择框架,找到System.Configuration这个选项,选择引用;

在须要调用链接字符串的类中加入:readonly static string constr = System.Configuration.ConfigurationManager.ConnectionStrings["constr"].ConnectionString;

最中要的是在UI层的配置文件App.config中添加下面的代码:

<connectionStrings>
<add name="constr" connectionString="Data Source=.;Initial Catalog=ItcastSIM;Integrated Security=True"/>
</connectionStrings>

当须要修改数据库时候,使用配置文件能够避免致使程序出错,若须要修改数据库,则直接将配置文件找到打开后修改即可;

 

sqlHelp类的出现,是为了将重复的代码,封装成一个类对象,而后须要的时候就直接调用到该类中的方法,例如sqlDataReader reader=sqlHelp.ExecuteReader(comm,p,p2);

相关文章
相关标签/搜索