




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 建立和使用DataSet4.1 DataSet的基本概念ADO.NET DataSet是一种驻留内存的数据缓存,可以作为数据的无连接关系视图。当应用程序查看和操纵DataSet中的数据时,DataSet没有必要与数据源一直保持连接状态。只有在从数据源读取或向数据源写入数据时才使用数据库服务器资源,这种无连接的架构可以使应用程序具有更大的伸缩性。4.1.1 DataSet对象模型DataSet对象是一个存储在客户端内存中的数据库,它可以把经过SqlCommand对象向数据库所取回来的数据,通过SqlDataAdapter对象产生,储存在它里面。而客户端所有的存取都是对它进行的。因为DataSet对象没有和数据库有联机关系,故它的存取速度必然很快。DataSet的结构如图4-1所示。图4-1 DataSet结构DataTable是DataSet中的表格。每个表格间的关联是通过DataRelation对象来建立的。DataTable中每条记录是一个DataRow对象。DataTable中每个字段是一个DataColumn对象。有一些数据的限制,则是由Constraints对象来表示。DataSet的另外个特殊的功能,就是可以直接在客户端产生数据表,而不需要连接到数据库来产生数据表。这个特色让ADO.NET对于异质、非关联性的数据库,或B2B的运用,皆有相当大的帮助。因为无法直接存取位于UNIX上的数据库,但是通过ADO.NET以XML作为数据交换的标准,就可以让UNIX端的数据库,产生以XML为形态的数据,然后传送至客户端。客户端可以根据这些XML文件,来建立暂存的数据表来存取它。存取完毕后,再通过XML的数据交换标准,将修改过后的数据,更新位于UNIX端的数据库。4.1.2构建DataSet 要构建DataSet对象,使用DataSet类的构造函数。【格式1】Public Sub New()【功能】初始化 DataSet 类的新实例。【说明】DataSet构造函数的此实现不使用任何参数,它为新实例创建默认名称“NewDataSet”。例如: Dim myDataSet As DataSet myDataSet = New DataSet【格式2】Public Sub New(ByVal DataSetName As String )【功能】用给定名称初始化 DataSet 类的新实例。【说明】需要 DataSet 的名称以确保 DataSet 的 XML 表示形式始终有用于文档元素的名称,而文档元素在架构定义中是最高级别的元素。例如: Dim myDataSet As DataSet myDataSet = New DataSet(“aNewDataSet”)4.2 DataTable的基本概念DataTable 表示一个内存内关系数据的表,可以独立创建和使用,也可以由其他 .NET Framework 对象使用,最常见的情况是作为 DataSet 的成员使用。DataTable 对象可通过使用 DataTable 构造函数来创建,或者可通过将构造函数参数传递到 DataSet 的 Tables 属性的 Add 方法(它是一个 DataTableCollection)来创建。DataTable 对象也可通过使用 DataAdapter 对象的 Fill 方法或 FillSchema 方法在 DataSet 内创建,或者可使用 DataSet 的 ReadXml、ReadXmlSchema 或 InferXmlSchema 方法从预定义的或推断的 XML 架构中创建。创建 DataTable 时,它是没有架构(结构)的。要定义表的架构,必须创建 DataColumn 对象并将其添加到表的 Columns 集合中。也可以为表定义主键列,并且可以创建 Constraint 对象并将其添加到表的 Constraints 集合中。在为 DataTable 定义了架构之后,可通过将 DataRow 对象添加到表的 Rows 集合中来将数据行添加到表。创建 DataTable 时,不需要为 TableName 属性提供值,可以在其他时间指定属性,或者将其保留为空。但是,在将一个没有 TableName 值的表添加到 DataSet 中时,该表会得到一个从“Table”(表示 Table0)开始递增的默认名称 TableN。注意:将一个 DataTable 作为成员添加到一个 DataSet 的 Tables 集合中后,不能再将其添加到任何其他 DataSet 的表集合中。4.2.1 DataTable对象模型DataTable对象模型,如图4-2所示。DataTable保存数据的形式类似于数据库表,是将数据保存在各个字段的各条记录中。图4-2 DataTable对象模型4.2.2构建DataTable对象要构建DataTable对象,使用DataTable类的构造函数。【格式1】Public Sub New()【功能】不带参数初始化 DataTable 类的新实例。【说明】构造函数为 DataTable 对象的所有属性设置初始值。例如: Dim myDataTable As New DataTable【格式2】Public Sub New(ByVal DataTableName As String)【功能】用指定的表名称初始化 DataTable 类的新实例。【参数】tableName 赋予表的名称。例如:Dim myDataTable As DataTable = New DataTable(MyDataTable)4.2.3 建立DataTable对象并添加的DataTableCollection 在DataSet中建立表,可以先建立DataTable对象,然后调用DataTableCollection的Add方法来将DataTable对象添加到DataSet中。【格式1】Overloads Public Overridable Function Add() As DataTable【功能】创建具有默认名称的新 DataTable 对象,并将其添加到集合中。【返回值】新创建的 DataTable。例如: 建立数据集Dim dSet As New DataSet在数据集当中建立一个表Dim myTable As DataTable = dSet.Tables.Add()设置表的名称myTable.TableName = 学生信息注意:由于未指定表的名称,表会被指定TableN的累加默认名称,其中的N从0开始(Table0、Table1等)。建议及时设置表达名称。【格式2】Overloads Public Overridable Sub Add(ByVal table As DataTable )【功能】将指定的 DataTable 添加到集合。【参数】table 要添加的 DataTable 对象。例如: 建立数据集Dim dSet As New DataSet建立表Dim myTable As New DataTable(学生信息)将表添加到数据集的表集合中dSet.Tables.Add(myTable)【格式3】Overloads Public Overridable Function Add(ByVal name As String) As DataTable【功能】创建具有指定名称的 DataTable,并将其添加到集合中。【参数】name 要赋予已创建的 DataTable 的名称。【返回值】新创建的 DataTable。例如: 建立数据集Dim dSet As New DataSet建立表Dim myTable As DataTable = dSet.Tables.Add(学生信息)4.3 定义DataTable的结构DataTable对象只有在拥有一个模式(schema)的情况下才能够得到广泛地使用。通过添加多个DataColumn对象并设置每列的约束,就可以创建一个模式。约束对能够存储在列中的数据做出限制,以维护数据的完整性。4.3.1 使用DataColumu构造函数在使用DataColumu构造函数建立DataColumn对象之后,设置其各项属性以便明确定义字段的结构描述,最后再使用DataColumnCollection的Add方法来将它加入字段集合中DataColumn类的构造函数如下:【格式1】Public Sub New()【功能】不带参数初始化DataColumn类的新实例。【说明】刚创建时,新的DataColumn对象没有默认的ColumnName或Caption 属性。但是,在添加到DataColumnCollection时,就给予列默认名称(“Column1”、“Column2”等等)。例如: 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn myColumn = New DataColumn 设置DataColumn对象的各个属性以便定义字段的结构描述 With myColumn 设置列名称 .ColumnName = id 设置数据类型 .DataType = System.Type.GetType(System.Int32) 将列的值自动递增 .AutoIncrement = True 列的起始值 .AutoIncrementSeed = 1 列使用的增量 .AutoIncrementStep = 1 设置只读 .ReadOnly = True End With 将DataColumn加入字段集合中 myDataTable.Columns.Add(myColumn)【格式2】Public Sub New(ByVal ColumnName As String)【功能】使用指定的列名称初始化 DataColumn 类的新实例。【参数】columnName一个字符串,它表示要创建的列的名称。例如: 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn myColumn = New DataColumn(id) 设置DataColumn对象的各个属性以便定义字段的结构描述 With myColumn 设置数据类型 .DataType = System.Type.GetType(System.Int32) 将列的值自动递增 .AutoIncrement = True 列的起始值 .AutoIncrementSeed = 1 列使用的增量 .AutoIncrementStep = 1 设置只读 .ReadOnly = True End With 将DataColumn加入字段集合中 myDataTable.Columns.Add(myColumn)【格式3】Public Sub New(ByVal ColumnName As String, ByVal dataType As Type)【功能】使用指定列名称和数据类型初始化 DataColumn 类的新实例。【参数】columnName一个字符串,它表示要创建的列的名称。DataType 支持的 DataType。例如: 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn Dim myType As System.Type myType = System.Type.GetType(System.Int32) myColumn = New DataColumn(id, myType) 设置DataColumn对象的各个属性以便定义字段的结构描述 With myColumn 将列的值自动递增 .AutoIncrement = True 列的起始值 .AutoIncrementSeed = 1 列使用的增量 .AutoIncrementStep = 1 设置只读 .ReadOnly = True End With 将DataColumn加入字段集合中 myDataTable.Columns.Add(myColumn)【格式4】Public Sub New(ByVal ColumnName As String, _ByVal dataType As Type, _ByVal expr As String)【功能】使用指定的名称、数据类型和表达式初始化 DataColumn 类的新实例。【参数】columnName一个字符串,它表示要创建的列的名称。DataType 支持的 DataType。expr用于创建该列的表达式。例如: 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn Dim myType As System.Type myType = System.Type.GetType(System.Int32) myColumn = New DataColumn(Tax, myType, UnitPrice * .0862) 设置DataColumn对象的各个属性以便定义字段的结构描述 With myColumn 将列的值不自动递增 .AutoIncrement = False 设置只读 .ReadOnly = True End With 将DataColumn加入字段集合中 myDataTable.Columns.Add(myColumn)【格式5】Public Sub New(ByVal ColumnName As String, _ByVal dataType As Type, _ByVal expr As String, _ByVal type As MappingType)【功能】使用指定的名称、数据类型和表达式初始化 DataColumn 类的新实例。【参数】columnName个字符串,它表示要创建的列的名称。DataType 支持的 DataType。Expr 用于创建该列的表达式。Type MappingType 值之一。例如: 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn Dim myType As System.Type myType = System.Type.GetType(System.Int32) myColumn = New DataColumn(Tax, myType, _ UnitPrice * .0862, MappingType.Attribute) 设置DataColumn对象的各个属性以便定义字段的结构描述 With myColumn 将列的值不自动递增 .AutoIncrement = False 设置只读 .ReadOnly = True End With 将DataColumn加入字段集合中 myDataTable.Columns.Add(myColumn)4.3.2 直接使用Columns属性的Add方法可以直接调用DataColumnCollection的Add方法来建立DataColumn对象并将其加入到字段集合中,然后再设置DataColumn对象的各项属性来详细定义字段的结构描述。【格式1】Overloads Public Overridable Function Add() As DataColumn【功能】创建 DataColumn 对象并将其添加到 DataColumnCollection 中。【返回值】新创建的 DataColumn。例如: 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn = myDataTable.Columns.Add myColumn = New DataColumn 设置DataColumn对象的各个属性以便定义字段的结构描述 With myColumn 设置列名称 .ColumnName = id 设置数据类型 .DataType = System.Type.GetType(System.Int32) 将列的值自动递增 .AutoIncrement = True 列的起始值 .AutoIncrementSeed = 1 列使用的增量 .AutoIncrementStep = 1 设置只读 .ReadOnly = True End With【格式2】Overloads Public Sub Add(ByVal column As DataColumn)【功能】创建指定的 DataColumn 对象并将其添加到 DataColumnCollection。【参数】column 要添加的 DataColumn。例如: 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn myColumn = New DataColumn 设置DataColumn对象的各个属性以便定义字段的结构描述 With myColumn 设置列名称 .ColumnName = id 设置数据类型 .DataType = System.Type.GetType(System.Int32) 将列的值自动递增 .AutoIncrement = True 列的起始值 .AutoIncrementSeed = 1 列使用的增量 .AutoIncrementStep = 1 设置只读 .ReadOnly = True End With 将DataColumn加入字段集合中 myDataTable.Columns.Add(myColumn)注意:要使用【格式2】Add方法,必须事先建立好DataColumn对象,而且它不会返回DataColumn对象。【格式3】Overloads Public Overridable Function Add( _ByVal columnName As String) As DataColumn【功能】用指定名称创建 DataColumn 对象,并将其添加到 DataColumnCollection。【参数】columnName 列的名称。 【返回值】新创建的 DataColumn。例如: 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn = myDataTable.Columns.Add(id) 设置DataColumn对象的各个属性以便定义字段的结构描述 With myColumn 设置数据类型 .DataType = System.Type.GetType(System.Int32) 将列的值自动递增 .AutoIncrement = True 列的起始值 .AutoIncrementSeed = 1 列使用的增量 .AutoIncrementStep = 1 设置只读 .ReadOnly = True End With【格式4】Overloads Public Overridable Function Add( _ByVal columnName As String, _ByVal type As Type ) As DataColumn【功能】用指定名称和类型创建DataColumn对象,并将其添加到 DataColumnCollection。【参数】columnName 列的名称。Type 新列的 DataType。 【返回值】新创建的 DataColumn。例如: 建立一个DataTable对象 Dim myDataTable As New DataTable Dim myType As System.Type myType = System.Type.GetType(System.Int32) 建立一个DataColumn对象 Dim myColumn As DataColumn = myDataTable.Columns.Add(id, myType) 设置DataColumn对象的各个属性以便定义字段的结构描述 With myColumn 将列的值自动递增 .AutoIncrement = True 列的起始值 .AutoIncrementSeed = 1 列使用的增量 .AutoIncrementStep = 1 设置只读 .ReadOnly = True End With【格式5】Overloads Public Overridable Function Add(ByVal columnName As String, _ ByVal type As Type, _ByVal expression As String ) As DataColumn【功能】用指定名称、类型和表达式创建DataColumn对象,并将其添加到 DataColumnCollection。【参数】columnName 列的名称。Type 新列的 DataType。 expression要分配给 Expression 属性的表达式【返回值】新创建的 DataColumn。例如: 建立一个DataTable对象 Dim myDataTable As New DataTable Dim myType As System.Type myType = System.Type.GetType(System.Int32) 建立一个DataColumn对象 Dim myColumn As DataColumn = myDataTable.Columns.Add(Tax, _myType, UnitPrice * .0862) 设置DataColumn对象的各个属性以便定义字段的结构描述 With myColumn 将列的值自动递增 .AutoIncrement = False 设置只读 .ReadOnly = True End With4.3.3 DataColumn对象的属性要能够明确定义字段的结构描述,必须借助在DataColumn对象的各个属性,DataColumn对象的属性见表4-1。表4-1 DataColumn对象的属性AllowDBNull 获取或设置一个值,指示对于属于该表的行,此列中是否允许空值。AutoIncrement 获取或设置一个值,指示对于添加到该表中的新行,列是否将列的值自动递增。AutoIncrementSeed 获取或设置其 AutoIncrement 属性设置为 true 的列的起始值。AutoIncrementStep 获取或设置其 AutoIncrement 属性设置为 true 的列使用的增量。Caption 获取或设置列的标题。ColumnMapping 获取或设置列的 MappingType。ColumnName 获取或设置 DataColumnCollection 中的列的名称。Container获取组件的容器。DataType 获取或设置存储在列中的数据的类型。Boolean Byte Char DateTime Decimal Double Int16 Int32 Int64 SByte Single String TimeSpan UInt16 UInt32 UInt64 DefaultValue 在创建新行时获取或设置列的默认值。DesignMode获取指示组件当前是否处于设计模式的值。Expression 获取或设置表达式,用于筛选行、计算列中的值或创建聚合列。ExtendedProperties 获取与 DataColumn 相关的自定义用户信息的集合。MaxLength 获取或设置文本列的最大长度。Namespace 获取或设置 DataColumn 的命名空间。Ordinal 获取列在 DataColumnCollection 集合中的位置。Prefix 获取或设置一个 XML 前缀,该前缀是 DataTable 的命名空间的别名。ReadOnly 获取或设置一个值,指示一旦向表中添加了行,列是否还允许更改。Site获取或设置组件的位置。Table 获取列所属的 DataTable。Unique 获取或设置一个值,指示列的每一行中的值是否必须是唯一的。4.3.4建立自动编号字段ADO.NET通过三个DataColumn的属性来支持自动编号字段,它们分别是:AutoIncrement、AutoIncrementSeed和AutoIncrementStep属性。建立自动编号字段必须进行下列设置:(1) 字段的数据类型必须是Int16、Int32或Int64。(2) 将DataColumn的AutoIncrement属性设置为True。(3) 使用DataColumn的AutoIncrementSeed属性来设置自动编号字段的种子。所谓“种子”就是第一条被添加到表的记录的自动编号字段内容。种子的默认值是0。(4) 使用DataColumn的AutoIncrementStep属性来设置自动编号字段的递增值。所谓“递增值”就是每次固定要自前一条记录的自动编号字段内容递增多少,递增值的默认值是1。(5) 由于 不需要在自动编号字段中输入数据,建议将自动编号字段的ReadOnly属性设置为True。例如:With myColumn 将列的值自动递增 .AutoIncrement = True 列的起始值 .AutoIncrementSeed = 1 列使用的增量 .AutoIncrementStep = 1 设置只读 .ReadOnly = TrueEnd With4.3.5建立表达式字段所谓表达式字段,就是此字段的内容是同一表中的同一记录的其他字段的运算结果。表达式的内容是一个计算表达式、汇总表达式或比较表达式。建立表达式字段,有如下3中方式:(1) 使用 Public Sub New(ByVal ColumnName As String, _ByVal dataType As Type, ByVal expr As String)例如: 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn Dim myType As System.Type myType = System.Type.GetType(System.Int32) myColumn = New DataColumn(Tax, myType, UnitPrice * .0862) (2) 使用 Public Sub New(ByVal ColumnName As String, _ByVal dataType As Type, _ByVal expr As String, _ByVal type As MappingType) 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn Dim myType As System.Type myType = System.Type.GetType(System.Int32) myColumn = New DataColumn(Tax, myType, _ UnitPrice * .0862, MappingType.Attribute)(3) 设置Expression属性建立一个表达式字段 建立一个DataTable对象 Dim myDataTable As New DataTable 建立一个DataColumn对象 Dim myColumn As DataColumn Dim myType As System.Type myType = System.Type.GetType(System.Int32) myColumn = New DataColumn(Tax, myType) myColumn.Expression = UnitPrice * .08621. 表达式语法在创建表达式时,使用 ColumnName 属性来引用列。例如,如果一个列的 ColumnName 是“UnitPrice”(单价),而另一个是“Quantity”(数量),则表达式将是:UnitPrice * Quantity在为筛选器创建表达式时,将字符串放到单引号中:LastName = Jones创建聚合列。类似于计算出的值,聚合基于 DataTable 中的整个行集执行操作。一个简单的示例是对返回到集中的行数进行计数,这也就是可能用来对某个特定销售人员完成的交易次数进行计数的方法,则表达式将是:DataSet1.Tables(Orders).Columns(OrderCount).Expression = Count(OrderID)下面的字符是特殊字符,如下面所解释的,如果它们用于列名称中,就必须进行转义:n (newline)t (tab)r (carriage return)()#/=+-*%&|如果列名称包含上面的字符之一,该名称必须用中括号括起来。例如,若要在表达式中使用名为“Column#”的列,应写成“Column#”:Total * Column#由于中括号是特殊字符,如果它是列名称的组成部分,必须使用斜杠 () 将中括号转义。例如,名为“Column”的列应写成:Total * Column(只有第二个中括号必须转义。)2. 用户定义的值用户定义的值可以用在将与列值进行比较的表达式内。字符串值应放在单引号内。日期值应放在磅符号 (#) 内。对于数值,允许使用小数和科学记数法。例如:FirstName = JohnPrice = 50.00Birthdate #1/31/82#对于包含枚举值的列,将值强制转换为整数数据类型。例如:EnumColumn = 53. 运算符使用布尔值 AND、OR 和 NOT 运算符时允许串联。可以使用括号来组合子句和强制优先级。AND 运算符优先于其他运算符。例如:(LastName = Smith OR LastName = Jones) AND FirstName = John在创建比较表达式时,允许使用下列运算符:=INLIKE在表达式中还支持下列算术运算符:+(加)-(减)*(乘)/(除)%(模数)4. 字符串运算符若要连接字符串,使用+字符。字符串比较是否区分大小写由 DataSet 类的 CaseSensitive 属性的值来确定。如果字符串比较区分大小写,则为True;否则为False。默认为False。5. 通配符在 LIKE 比较中,* 和 % 两者可以互换地作为通配符。如果 LIKE 子句中的字符串包含 * 或 %,那么这些字符应用中括号()对其进行转义。如果子句中有中括号,那么中括号字符应用中括号对其进行转义(例如 或 )。在模式的开头和结尾,或者在模式的结尾,或在模式的开头允许使用通配符。例如:ItemName LIKE *product*ItemName LIKE *productItemName LIKE product*在字符串的中间不允许使用通配符。例如,不允许 te*xt。6. 父/子关系引用通过在列名称前面加 Parent,就可以在表达式中引用父表。例如,Parent.Price 引用父表的名为 Price 的列。通过在列名称前面加一个 Child,就可以在表达式中引用子表中的列。但是,因为子关系可以返回多行,所以必须在聚合函数中包括对子列的引用。例如,Sum(Child.Price) 将返回子表中名为 Price 的列的总和。如果某个表有多个子表,则语法是:Child(RelationName)。例如,如果某个表有两个子表,它们的名称分别为 Customers 和 Orders,则 DataRelation 对象被命名为 Customers2Orders,引用将为:Avg(Child(Customers2Orders).Quantity)7. 聚合支持下列聚合类型:Sum(求和)Avg(平均)Min(最小值)Max(最大值)Count(计数)StDev(统计标准偏差)Var(统计方差)。聚合通常沿着关系执行。通过使用上面列出的函数之一和上面“父/子关系引用”中详述的子表列,来创建聚合表达式。例如:Avg(Child.Price)Avg(Child(Orders2Details).Price)聚合也可以在单个表上执行。例如,若要为名为“Price”的列中的数字创建汇总,就用:Sum(Price)注意如果使用一个表来创建聚合,将没有组合功能。相反,所有行都在列中显示相同的值。如果表没有行,聚合函数将返回空引用(Visual Basic 中为 Nothing)。4.3.6 定义表的主键数据库中的表通常拥有能够惟一标识表中每一行的某一列或某一组列。其标识作用的列或一组列称为“主键”。1. 使用DataTable的PrimaryKey属性DataTable的PrimaryKey属性接收具有一个或多个DataColumn对象的数组为它的值。例如:myDataTable.PrimaryKey = New DataColumn() myDataTable.Columns(ID)2. 定义包含多例的主键例如:myDataTable.PrimaryKey = New DataColumn() _myDataTable.Columns(departMentID), _ myDataTable.Columns(ID)3. 使用约束定义主键当添加惟一约束时,将构造函数的最后一个参数设为True,可以表明创建的是主键而不是普通的惟一约束。例如:Dim myConstraint As Constraint = myDataTable.Constraints.Add _ (myConstraint, myDataTable.Columns(ID), True)4. AllowDBNull属性当将单一列标识为DataTable的主键时,表会自动将列的AllowDBNull属性设置为False,将Unique属性设置为True。对于由多列组成的主键,AllowDBNull属性将被自动设置为False。4.3.7 使用惟一约束关系数据库必须强制数据的完整性以确保数据库中数据的质量。在ADO.NET中维护完整性的一个方法是将约束添加到DataSet的表中。约束是应用于某列和它的相关的自动化规则,它决定当修改某行中的值时应该发生什么动作。UniqueConstraint对象可以指派给表中单一列或一组列,它确保指定列中的所有数据在每行中是惟一的。通过将某列的Unique属性设置为True可以创建单一列的惟一约束。主键与UniqueConstraint对象约束的主要差异:(1) 一个表最多只能 一个主键,但是却可以使用多个UniqueConstraint对象。即表除了被定义为主键的字段外,还有其他字段也需要进行惟一性验证,可以使用UniqueConstraint对象约束来确保单个字段或多个字段组合后的内容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 音乐专业听力试题及答案
- 黑吉辽蒙金太阳2026届高三9月开学联考(26-1002C)地理试题及答案
- 安徽省九师联盟2026届高三9月开学联考政治(含答案)
- 《烹饪原料初加工工艺》项目一刀工与原料成形
- 钻石专业试题及答案大全
- 路面施工方案反光衣
- 库房物资搬运施工方案
- 地产开发合作协议示例
- 楼顶油漆施工方案
- DB32-T 4451.10-2023 医用影像设备临床使用管理与质量控制规范 第10部分:超声成像设备
- 九年级化学人教版基于特定需求设计和制作简易供氧器(教学设计)
- SCAMPER创新思维模型
- 乡镇庆中秋迎国庆活动方案
- 山东科学技术出版社小学一年级上册综合实践活动教案
- 2024口腔医学专业考核标准
- 大型群众性活动安全许可申请表
- 小学数学人教版-六年级上-第一单元-分数乘法-教材分析
- 百融云创风险决策引擎V5产品操作手册
- DZ∕T 0033-2020 固体矿产地质勘查报告编写规范(正式版)
- 思念混声合唱简谱
- 家庭健康指导员培训方案及流程
评论
0/150
提交评论