您的位置:首页 > 其它

dataset、dataview、 datatable、 datacolum、datarow的关系一

2009-05-27 10:35 399 查看
数据集DataSet

DataSet
由表、关系和约束的集合组成。在 ADO.NET 中,DataTable 对象用于表示 DataSet 中的表。DataTable
表示一个内存内关系数据的表;数据对于所处的基于 .NET 的应用程序来说是本地数据,但可从数据源(例如,使用 DataAdapter 的 Microsoft SQL Server)中导入。

DataSet
类是数据的脱机容器。它不包含数据库连接的概念,实际上存储在
DataSet
中的数据不一定来源于数据库,它可以是
CSV
文件中的记录,或是来自测量设备中的点读取。

数据集由一组数据表组成,每个表都有一些数据列和数据行。除了定义数据外,还可以在
DataSet
中定义表之间的链接。例如,我们常常要定义父
/
子关系
(
通常也称为主
/
从关系
)
。表中的一个记录
(

Order)
链接到另一个表的许多记录上
(

Order
_
Details)
,这种关系可以在
DataSet
中定义和导航,如图
21-4
所示。




21-4

下一节描述和
DataSet
一起使用的类。

数据表DataTable


DataTable 类是 .NET Framework 类库中 System.Data 命名空间的成员。您可以独立创建和使用
DataTable,也可以作为 DataSet 的成员创建和使用,而且 DataTable 对象也可以与其他 .NET Framework
对象(包括 DataView)一起使用。您可以通过 DataSet 对象的 Tables 属性来访问 DataSet 中表的集合。

数据表非常类似于物理数据库表,它由一些带有特定属性的列组成,可能包含
0

行或多行数据。数据表也可以定义主键码
(
可以是一个列或多个列
)
,列上也可以包含约束。这些信息在本章的其他部分称为“模式”。

为数据表定义模式有几种方式
(
把数据集当作一个整体
)
,这些在介绍了数据列和数据行后讨论。图
21-5
显示了一些可通过数据表访问的对象。




21-5

DataTable
对象
(

DataColumn)
可以附带任意多个扩展属性。这个集合可以用附属于对象的用户自定义信息来填充。例如,某个列有一个输入掩码,用于验证列的内容是否有效,比较规范的示例是
US
社会安全号。当数据在中间层中构造,要返回给客户机,进行某些处理时,最适合使用扩展的属性。例如,可以在扩展的属性
(

min

max)
中存储数字列的有效性标准,在验证用户输入时在
UI
层使用它们。

填充数据表时,可以从数据库中选择数据,从文件中读取数据,或在代码中手工填充,
Rows
集合会包含这些检索出来的数据。

Columns
集合包含已经添加到表中的
DataColumn
实例,它们定义了数据的模式,例如数据类型、是否可为空和默认值等。
Constraints
集合可以用惟一或主键码约束来填充。

数据表使用模式信息的一个示例是在
DataGrid(
详见第
22

)
中显示数据。
DataGrid
控件使用属性
(
例如列的数据类型
)
来确定该列应使用什么控件。数据库中的
bit
列在
DataGrid
中显示为一个复选框。如果列在数据库模式中定义为
NOT NULL
,那么该列就存储在
DataColumn
中,以便在用户试图移出数据行时测试该列。

表的架构或结构由列和约束表示。使用 DataColumn 对象以及 ForeignKeyConstraint 和 UniqueConstraint 对象定义 DataTable 的架构。表中的列可以映射到数据源中的列、包含从表达式计算所得的值、自动递增它们的值,或包含主键值。

数据列
DataColumn

DataColumn
对象定义了数据表中某列的属性,例如该列的数据类型,该列是否为只读,以及其他属性。列可以在代码中创建,或者由运行库自动生成。

在创建一个列时,给它指定名称是很有用的,否则运行库就会为该列生成一个名称,其格式是
Columnn



其中
n

是一个递增的数字。

列的数据类型可以在构造函数中提供,也可以通过设置
DataType
属性来指定。把数据加载到数据表中后,就不能改变列的数据类型了,否则会抛出

ArgumentException
异常。

创建的数据列可以包含表
21-3
所示的
.NET Framework
数据类型。


21-3

Boolean

Decimal

Int64

TimeSpan

Byte

Double

Sbyte

UInt16

Char

Int16

Single

UInt32

DateTime

Int32

String

UInt64

一旦创建好,就要给
DataColumn
对象设置其他属性,例如该列是否可为空或者设置默认值。下面的代码段显示了给
DataColumn
设置的一些常见选项:

DataColumn customerID = new DataColumn("CustomerID" , typeof(int));

customerID.AllowDBNull = false;

customerID.ReadOnly = false;

customerID.AutoIncrement = true;

customerID.AutoIncrementSeed = 1000;

DataColumn name = new DataColumn("Name" , typeof(string));

name.AllowDBNull = false;

name.Unique = true;

可以给
DataColumn
设置如表
21-4
所示的属性。


21-4









AllowDBNull

如果为
true
,该列就可以设置为
DBNull

AutoIncrement

定义自动生成的列值为一个递增的数字

AutoIncrementSeed

定义
AutoIncrement
列最初的种子值

AutoIncrementStep

用默认的步骤定义自动生成列值的步骤

Caption

可以用于在屏幕上显示列名

ColumnMapping

指定当
DataSet
通过调用
DataSet.WriteXml
来保存时,列如何映射到
XML


ColumnName

列名。如果没有在构造函数中设置,就由运行库自动生成

DataType

列的
System.Type


DefaultValue

可以定义列的默认值

Expression

该属性定义表达式用于所计算的列

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: