ADO总结
==============================第一章==================================
1.三层架构包含:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
2.表现层(UI)作用:实现与用户的交互。
业务逻辑层(BLL)作用:传递数据。
数据访问层(DAL)作用:实现与数据库的交互和访问。
3.搭建三层架构的步骤:
(1):创建表现层(窗体程序)
(2):创建数据操作层(类库程序)
(3):创建业务逻辑层(类库程序)
(4):创建业务实体
(5):添加依赖关系
4.三层之间的依赖关系:
(1)表现层依赖业务逻辑层和实体层
(2)业务逻辑层依赖数据操作层和实体层
(3)数据操作层依赖实体层
5.使用DataSet在三层之间传递数据
(1)创建数据访问层的方法,用于得到DataSet。
(2)在业务逻辑层中调用在数据访问层中定义的获取DataSet的方法,得到DataSet对象。
(3)表现层中通过业务逻辑层中的业务方法获取DataSet对象,将DataSet中的数据呈现 给用户。
==================================第二章==============================
1.DataSet是一个临时数据库包含:一个数据集合Tables,Tables由若干个DataTable对象构
成,每个DataTable中包含两个数据集合Columns和Rows,其中Columns由若干个
DataColumn对象构成,Rows由若干DataRow对象构成。
2.DataTable是内存数据表,由DataColumn对象和DataRow对象构成。
//创建一个空结构的DataTable的方式
DataTable 对象=new DataTable(数据表名称);
3.DataColumn是数据表在内存中的数据列
DataColumn属性
属性名 解释
ColumnName 数据列名称(可以不赋值)
DataType 数据类型(值为Type类型)
MaxLength 列最大长度
DefaultValue 列的默认值
AllowDBNull 列值是否可以为Null
4.DataRow是数据表中的数据行。DataRow类是一个抽象类,所以不能直接实例化,只能通过DataTable对象跌NewRow方法获取一个DataRow对象。
例:DataRow row=dtCust.NewRow();
5.创建自定义的DataSet步骤:
(1)添加对于System.Data命名空间的引用。
(2)创建DataSet对象。
(3)创建DataTable对象。
(4)创建DataColumn对象,并添加到DataTable的Columns集合中
(5)获取DataRow对象,为各列赋值,添加到DataTable的Rows集合中。
(6)将DataTable对象添加到DataSet的Tables集合中。
6.DataView是DataTable的虚拟视图,主要用来显示数据。
7.DataView使用RowFilter属性过滤数据,使用Sort属性排序,以不同形式来显示数据。
创建DataView的两种方法:
(1)DataView dvCust=new DataView();
dvCust.Table=dtCust; //dtCust是一个DataTable对象
(2)DataView dvCust=dtCust.DefaultView;//dtCust是一个DataTable
对象
4.使用RowFilter属性对数据过滤
语法:数据视图.RowFilter="条件";
5.使用Sort数据对数据排序
语法:数据视图.Sort="排序条件";
6.创建自定义业务实体类:作为实体对象,用来传递数据
方法一:手动在Model中添加一个类
方法二:使用VS.NET 2008提供的数据关系图来创建。
右键“Model”项目,选择“添加”——“新建项”,选择“
类关系图”
7.ComboBox数据绑定是在应用程序UI与业务逻辑之间建立连接的过程。
数据绑定的两个步骤:指定控件的数据源,确定控件绑定的数据对象的属性。
12.Clone方法只复制结构,不复制值。Copy既复制结构,又复制值。
=================================第三章===============================
第三章:使用DBHelper类封装数据CRUD方法
一、封装CRUD方法
1、SqlDataReader实现了IDataReader接口。
2、执行完毕,当SqlDataReader关闭时自动关闭数据库连接。
SqlCommand cmd=new SqlCommand();
SqlDataReader reader=null;
reader= cmd.ExecuteReader(CommandBehavior.CloseConnection);
3、数据的添加、修改、删除可以封装到一个方法中,该方法通常返回布尔类型。
二、在ADO.NET中调用存储过程
1、使用存储过程的优势:(1)执行效率高 (2)更加安全
2、如何使用存储过程:
(1)定义存储过程需要传入或传出的参数。
例:SqlParameter p=new SqlParameter("@LoginName",user.UserName);
(2)为Command对象指定CommandType属性,属性值指定是执行存储过程。
cmd.CommandType=CommandType.StoredProcedure;
(3)为Command对象指定CommandText属性,属性值为存储过程名称。
cmd.CommandText="存储过程名称";
(4)将参数对象加入到Command对象的Parameters集合中。
foreach(SqlParameter p in list){
//list是一个SqlParameter数组
cmd.Parameters.Add(p);
}
(5)调用Command对象的ExecuteNonQuery()方法执行存储过程。
int result=cmdUser.ExecuteNonQuery();
if(result>0){Console.WriteLine("执行添加成功!");}
3、判断是否有参数:
if(params.length>=){cmd.Parameters.Add(params);}
注意:
4、CommandType参数用来判断是执行语句还是存储过程。
5、params关键字只能放在方法的参数列表的最后,表示可选参数。
6、每个SqlParameter对象都需要与存储过程的参数类型和名称保持一致。
7、存储过程参数和返回值的处理
(1)默认情况下,如果不指定存储过程的参数方向,参数为输出类型参数。
(2)out参数处理:如果存储过程中有out参数,需要指定参数的方向,执行完毕后,通过参数的Value属性获取传出的参数值
例: 指定参数的方向为传出参数
SqlParameter对象.Direction=ParameterDirection.output;
三、ADO.NET事务处理
1、3种方式:T-SQL程序块编写事务处理代码、ADO.NET使用事务对象进行事务处理、分布式事务处理(COM+事务)。
2、T-SQL程序块编写事务处理代码优势:(1)事务都包含在单独的调用中 (2)独立于应用程序。
使用Begin trans,commit trans,Rollback trans语句实现
3、ADO.NET使用事务对象进行事务处理优势:(1)执行速度和T-SQL事务同样快 (2)独立于数据库,不同数据库专有代码被隐藏
四、使用Transaction对象进行事务处理的步骤:
1、连接对象:SqlTransaction tran=connection.BeginTransaction();
2、使用事务对象的Commit方法提交事务:tran.Commit();
3、发生异常回滚事务:tran.Rollback()。
================================第四章================================
第四章 序列化和Winodws服务
1.特性是一种类,直接或间接派生自Attribute类。
2.定制特性类的4个步骤:
(1)应用AttributeUsageAttribute。
(2)声明特性类。
(3)声明属性。
(4)声明构造函数。
3.反射是一种可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员的机制。
4.System.Type类:Type是一个抽象类,可以通过任何类型使用typeof运算法和GetType方法获得对它的引用
5.序列化是将对象的状态保存到存储介质中的过程;反序列化从存储介质读取对象状态数据、重新构造对象的过程。
6.能够序列化和反序列化的对象,其类型必须添加[Serializable]特性。
7.Windows服务与其他的.NET程序不同,它必须安装且在注册表中注册。
8.所有的Windows服务类都派生自服务的基类ServicBase。
=================================第五章===============================
第五章:异常处理和测试
一、异常处理
1、异常处理中使用try、catch、finally、throw关键字
2、注意:在处理异常时:即使在finally代码块前出现了return,也会先执行finally块的代码,再退出方法。
3、自定义异常:一般是预先知道异常差生的原因。必须派生自ApplicationException类或Exception类,并且在异常类中重载构造函数。
4、.NET平台有两种异常:公共语言运行时引发的异常和用户应用程序引发的异常。
5、Exception类常用的4个属性是:Message、Source、StackTrace、InnerException。
二、VSTS简介
1、VSTS的核心-TFS(Team System Foundation Server)。
2、VSTS团队角色有3种:(1)架构团队(Team Architect) (2)开发团队(Team Developer) (3)测试团队(Team Test)
3、使用VSTS创建和运行单元测试:创建测试、编写测试、运行测试。
4、可以设置测试项目为启动项目,然后在被测试代码中添加断点,然后进行调试运行。
5、VSTS是一套高生产力的、集成的、可扩展的生命周期开发工具。
三、软件测试
1、软件测试按测试的阶段和测试的内容来分一般包括:单元测试、集成测试、系统测试、确认测试。
2、按测试方法来分:黑盒测试和白盒测试。
3、单元测试定义:是指针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作,单元测试又称模块测试。
四、断言(Assert)
1、定义:是一种语句,用来判断测试得到的实际值与期望值是否相等。
2、断言提供的方法:
(1):Assert.AreEqual():测试指定的值是否相等,如果相等,测试通过。
(2):Assert.AreNotEqual():测试指定的值是否不等,如果不等,测试通过。
(3):Assert.Inconclusive():表示无法验证断言,并显示一条消息。
(4):Assert.IsTrue():测试指定的条件是否为真,如果为真,测试通过。
(5):Assert.IsFalse():测试指定的条件是否为假,如果为假,测试通过。
(6):Assert.IsNull():测试指定的对象是否为Null,如果为Null,测试通过。
(7):Assert.IsNotNull():测试指定的对象是否不为Null,如果为Null,测试失败。
(8):Assert.AreSame():测试指定的对象变量是否引用同一个对象,如果引用的对象相同,测试通过。
(9):Assert.AreNotSame():测试指定的对象变量是否引用的是不同对象,如果引用的对象相同测试失败。
3、单元测试的一个关键指标是在单元测试运行时覆盖了多少代码,该指标被称为代码覆盖率。
4、注意:启用了代码覆盖率后就不能在调试状态下进行测试。 查看代码覆盖率前,需要配置测试文件LocalTestRun.testrunconfing。