您的位置:首页 > 数据库

C# 学习笔记 数据库 断开连接层 (书:C#与.NET4 第22章)

2013-01-27 21:04 288 查看
断开连接层主要使用System.Data命名空间下的成员。包括DataSet,DataTable,DataRow,DataColume等。

22.1ADO.NET断开连接层
重要概念数据适配器:是保存在内存中的数据库副本DataSet和数据库之间的桥梁。Instead of使用数据读取器,我们使用数据适配器来获取和更新数据。

为了增加性能,数据适配器会尽可能缩短连接打开的总时间。

22.2DataSet的作用
包含了3个有用的强类型集合,即DataTableCollection,DataRelationCollection,PropertyCollection。而这些集合又可以通过相应的属性来访问。

22.2.1DataSet的主要属性:通过一张表格介绍了DataSet的其他属性和作用,包括CaseSensitive等。

22.2.2DataSet的主要方法:通过一张表格介绍了DataSet的一些方法及其作用。包括可以回滚,clear,clone,copy等。

22.2.3构建DataSet:创建了一个很简单的DataSet并添加了三个扩展属性(利用ExendedProperty),此外介绍了GUID(全局唯一标示符),可以快速生成唯一的标示符。

22.3使用DataColumn
介绍了DataColumn的属性和作用表。

22.3.1构建DataColumn:创建新的列,并定义该列的属性。注意Caption属性可以定义一个用户友好的名称。

22.3.2启用自增列:自增的能力一般用于主键,可以确保该列的值是不重复的。注意需要设置三个属性来完成自增的功能。

22.3.3把DataColumn对象加入DataSet:可以通过AddRange方法一次性加入多个列。该节介绍了如何将列加入新建的一个DataTable。

22.4使用DataRow
介绍了DataRow的属性和作用表。需要注意的是DataRow和DataColumn之间的一点不同,DataRow没有公共的构造函数,所以不能创建一个DataRow实例(new DataRow)。并以一个简单的例子介绍了如何插入行。(注意这里用的是插入,行的定义是DataRow carRow = inventoryTable.NewRow();)

22.4.1RowState属性:介绍了DataRowState枚举的值及其作用。每当对一行做操作(包括新建,插入,改变值等),对应的该行的RowState都会发生改变。而且DataTable会记住哪些行是被修改(增加,修改,删除)过的,在提交的时候只提交被修改过的数据。

22.4.2DataRowVersion属性:介绍了DataRowVersion的属性及其作用值。DataRow能维护三个数据副本(此外还包括Current值),允许用户改变值,改变主意之后进行撤销。

22.5使用DataTable
DataTable的很多成员在名字和功能上都和DataSet差不多,这里提供了一个表,介绍了DataTable除了Rows和Columns之外的成员属性及其作用。

此外还以简介了如何将DataTable的PrimaryKey属性设置为某一个DataColumn

22.5.1将DataTable插入到DataSet中

22.5.2获取DataSet中的数据:以一个例子介绍了如何获取数据(包括扩展属性,列名,内容)

22.5.3使用DataTableReader对象处理DataTable:可以利用一个叫CreateDataReader()的方法来利用while循环读取数据。该方法的优势是我们可以用一个模型来处理数据,而不去管使用哪个层的ADO.NET。而且可以快速取出数据,无需使用两个列和行的for循环。

22.5.4序列化DataTable/DataSet对象为XML:可以分别用WriteXml和WriteXmlSchema的方式来将DataSet保存为xml文件或者.xsd文件。

22.5.5以二进制格式序列化DataTable/DataSet对象:如果DataSet对象需要跨越机器边界传递的话,这就特别有用(比如在分布式应用程序中)。保存为二进制格式的文件打开后事很有爱熟悉的样子哦。

22.6将DataTable对象绑定到用户界面
利用DataGridView控件可以方便的将DataTable中的值绑定到DataGridView中并显示。
22.6.1从泛型List<T>合成DataTable
22.6.2从DataTable中删除行:由于DataGridView绑定的是DataTable对象的状态,所以DataTable中状态的改变会实时更新。
22.6.3根据筛选条件选择行:可以利用SQL过滤参数的语法来排序或者选出ID>5的数据。
22.6.4在DataTable中更新行
22.6.5使用DataView类型:DataView允许以编程的方式从DataTable中提取一组数据到独立的对象。可以利用它的RowFilter属性方便的选取一组数据。另外DataView可以作为DataGridView控件的Datasource从而可以方便的显示在界面上。
22.7使用数据适配器
数据适配器类用来向DataSet填充DataTable并把修改后的DataTable返回数据库处理。(表),我们不需要打开或关闭对数据库的连接(会自动管理)。
22.7.1一个简单的数据适配器示例:连接一个数据库里的Table,并用它来填充DataSet。
22.7.2映射数据库名称为友好名称:在调用Fill()方法之前给列名添加用户友好的名称。
22.8向AutoLotDAL.dll添加断开连接功能
演示如何使用数据适配器将DataTable中的修改发回到数据库处理的过程
22.8.1定义初始类类型:把DataAdapter作为一个私有变量封装到类库中。
22.8.2使用SqlCommandBuilder来配置数据适配器:可以自动生成包含在InsertCommand, UpdateCommand,DeleteCommand中的值。不过有很多制约。
22.8.3实现GetAllInventory():获取inventory表,并将其与adapter关联。
22.8.4实现UpdateInventory():adapter.update(DataTable);
22.8.5设置版本号:在选项卡里设置
22.8.6测试非连接的功能:构建前端来测试类。
22.9多表DataSet对象和数据关系
一个DataSet对象包含数个关联的DataTable。EX:MultitabledDataSet
22.9.1建立数据适配器:使用命令构建器为每一个adapter自动生成SQL命令。此外为每一个表设置一个数据适配器。
22.9.2建立表间关系
22.9.3更新Database表:每个adapter都使用一次update
22.9.4在关联表中切换:通过relation建立起的父子关系可以通过调用GetParentRows或者GetChildRows来得到关联的数据行的信息。
22.10Windows Forms数据库设计器工具
22.10.1可视化设计DataGridView:通过控件自带的Add Project Data Source功能可以方便的添加数据集
22.10.2生成的app.config文件:自动生成了一个app.config文件,其中包含了一个名字奇怪的connectionStrings元素。
22.10.3强类型的DataSet:通过在ui中手动绑定数据源可以自动生成强类型的DataSet。
22.10.4强类型的DataTable:定义了一组方法,更方便使用。
22.10.5强类型的DataRow:定义了一组方法和属性。
22.10.6强类型的数据适配器
22.10.7完成Windows Forms应用程序:通过一个很简单的例子演示了如何使用一个button方便的update所有数据。
22.11将强类型的数据库代码隔离到类库中
22.12LINQ to DataSet
回顾了本章中三种操作DataSet数据的方式,分别是使用Tables,Rows和Columns集合;使用数据表读取器;使用强类型数据类。
由于不能直接对DataTable使用LINQ查询,所以我们需要先将其转换为可以查询的IEnumerable<T>的对象。
22.12.1DataSet Extensions库的作用:这是一个dll类库,最常用的类为DataTableExtensions和DataRowExtensions。他们扩展了DataTable和DataRow的功能。
22.12.2获取与LINQ兼容的DataTable
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: