Vs2010+VB+SQL2008 DataSet

1、创建DataSet

可以通过调用 DataSet 构造函数来创建 DataSet 的实例。请指定一个可选名称参数。如果没有为 DataSet 指定名称,则该名称会设置为“NewDataSet”。

以下代码示例演示如何构造 DataSet 的实例。

DataSet custDS = new DataSet("CustomerOrders")

2、向DataSet添加DataTable

ADO.NET 使您能够创建 DataTable 对象并将其添加到现有 DataSet 中。可以使用要添加到 DataTableColumns 集合中的 DataColumn 对象的 PrimaryKeyUnique 属性来设置 DataTable 的约束信息。

以下示例构造一个 DataSet,将一个新的 DataTable 对象添加到该 DataSet 中,然后将三个 DataColumn 对象添加到该表中。最后,该代码将一个列设置为主键列。

DataSet custDS = new DataSet("CustomerOrders");

DataTable ordersTable = custDS.Tables.Add("Orders");

DataColumn pkCol = ordersTable.Columns.Add("OrderID", typeof(Int32));
ordersTable.Columns.Add("OrderQuantity", typeof(Int32));
ordersTable.Columns.Add("CompanyName", typeof(string));

ordersTable.PrimaryKey = new DataColumn[] {pkCol};

区分大小写

按名称引用 DataSet 中的表和关系是区分大小写的。一个 DataSet 中可以存在两个或更多个名称相同但大小写不同的表或关系。例如,可以有 Table1table1。在这种情况下,对其中一个表的按名称引用必须精确匹配该表名称的大小写,否则会引发异常。例如,如果 DataSet myDS 包含表 Table1table1,则会按名称将 Table1 当作 myDS.Tables["Table1"] 来引用,而将 table1 当作 myDS.Tables ["table1"] 来引用。如果试图将其中任一个表当作 myDS.Tables ["TABLE1"] 来引用,则会生成异常。

如果只存在一个具有特定名称的表或关系,则区分大小写规则不适用。也就是说,如果 DataSet 中没有其他任何表或关系对象匹配该特定表或关系对象的名称,那么即使大小写不同,仍可以按采用任何大小写的名称来引用该对象,而不会引发异常。例如,如果 DataSet 只包含 Table1,则可以使用 myDS.Tables["TABLE1"] 来引用它。

DataSetCaseSensitive 属性不影响此行为。CaseSensitive 属性会应用于 DataSet 中的数据,它将影响排序、搜索、筛选、约束强制等。CaseSensitive 属性不会影响对 DataSet 中表或关系的引用。

3、添加表间关系

在包含多个 DataTable 对象的 DataSet 中,可以使用 DataRelation 对象来使一个表与另一个表相关,在多个表之间导航,以及从相关表中返回子行或父行。

创建 DataRelation 所需的参数是所创建的 DataRelation 的名称以及对用作关系中父列和子列的那些列的一个或多个 DataColumn 引用的数组。当创建 DataRelation 后,可以使用它在多个表之间导航和检索值。

默认情况下,向 DataSet 中添加 DataRelation 会将一个 UniqueConstraint 添加到父表中并将一个 ForeignKeyConstraint 添加到子表中。有关这些默认约束的更多信息,请参阅将约束添加到表。

以下代码示例使用 DataSet 中的两个 DataTable 对象来创建一个 DataRelation。每个 DataTable 包含一个名为 CustID 的列,它用作两个 DataTable 对象之间的链接。该示例将单个 DataRelation 添加到 DataSetRelations 集合中。该示例中的第一个参数指定所创建的 DataRelation 的名称。第二个参数设置父 DataColumn,第三个参数设置子 DataColumn

custDS.Relations.Add("CustOrders",custDS.Tables["Customers"].Columns["CustID"],custDS.Tables["Orders"].Columns["CustID"]);

DataRelation 也具有 Nested 属性,如果该属性设置为 true,则来自子表的行会在使用 WriteXml 写为 XML 元素时嵌套在来自父表的关联行中。有关更多信息,请参阅 XML 和 DataSet



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值