命名空间: System.Data
程序集: System.Data(在 System.Data.dll 中)
1 [SerializableAttribute] 2 public class DataSet : MarshalByValueComponent, IListSource, 3 IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable
DataSet 类型公开以下成员。
名称 | 说明 | |
---|---|---|
![]() ![]() | DataSet() | 初始化 DataSet 类的新实例。 |
![]() ![]() | DataSet(String) | 用给定名称初始化 DataSet 类的新实例。 |
![]() | DataSet(SerializationInfo, StreamingContext) | 基础结构。初始化具有给定序列化信息和上下文的 DataSet 类的新实例。 |
![]() | DataSet(SerializationInfo, StreamingContext, Boolean) | 基础结构。初始化 DataSet 类的新实例。 |
名称 | 说明 | |
---|---|---|
![]() ![]() | CaseSensitive | 获取或设置一个值,该值指示 DataTable 对象中的字符串比较是否区分大小写。 |
![]() ![]() | Container | 获取组件的容器。 (继承自 MarshalByValueComponent。) |
![]() ![]() | DataSetName | 获取或设置当前 DataSet 的名称。 |
![]() ![]() | DefaultViewManager | 获取 DataSet 所包含的数据的自定义视图,以允许使用自定义的 DataViewManager 进行筛选、搜索和导航。 |
![]() ![]() | DesignMode | 获取指示组件当前是否处于设计模式的值。 (继承自 MarshalByValueComponent。) |
![]() ![]() | EnforceConstraints | 获取或设置一个值,该值指示在尝试执行任何更新操作时是否遵循约束规则。 |
![]() ![]() | Events | 获取附加到该组件的事件处理程序的列表。 (继承自 MarshalByValueComponent。) |
![]() ![]() | ExtendedProperties | 获取与 DataSet 相关的自定义用户信息的集合。 |
![]() ![]() | HasErrors | 获取一个值,指示在此 DataSet 中的任何 DataTable 对象中是否存在错误。 |
![]() ![]() | IsInitialized | 获取一个值,该值表明是否初始化 DataSet。 |
![]() ![]() | Locale | 获取或设置用于比较表中字符串的区域设置信息。 |
![]() ![]() | Namespace | 获取或设置 DataSet 的命名空间。 |
![]() ![]() | Prefix | 获取或设置一个 XML 前缀,该前缀是 DataSet 的命名空间的别名。 |
![]() ![]() | Relations | 获取用于将表链接起来并允许从父表浏览到子表的关系的集合。 |
![]() | RemotingFormat | 为远程处理期间使用的 DataSet 获取或设置 SerializationFormat。 |
![]() ![]() | SchemaSerializationMode | 获取或设置 DataSet 的 SchemaSerializationMode。 |
![]() ![]() | Site | 获取或设置 DataSet 的 System.ComponentModel.ISite。 (重写 MarshalByValueComponent.Site。) |
![]() ![]() | Tables | 获取包含在 DataSet 中的表的集合。 |
名称 | 说明 | |
---|---|---|
![]() ![]() | Disposed | 添加事件处理程序以侦听组件上的 Disposed 事件。 (继承自 MarshalByValueComponent。) |
![]() ![]() | Initialized | 在初始化 DataSet 后发生。 |
![]() ![]() | MergeFailed | 当目标和源 DataRow 的主键值相同且 EnforceConstraints 设置为真时发生。 |
名称 | 说明 | |
---|---|---|
![]() ![]() ![]() | IListSource.ContainsListCollection | 有关此成员的说明,请参见 IListSource.ContainsListCollection。 |
![]() ![]() ![]() | IListSource.GetList | 有关此成员的说明,请参见 IListSource.GetList。 |
![]() ![]() ![]() | IXmlSerializable.GetSchema | 有关此成员的说明,请参见 IXmlSerializable.GetSchema。 |
![]() ![]() ![]() | IXmlSerializable.ReadXml | 有关此成员的说明,请参见 IXmlSerializable.ReadXml。 |
![]() ![]() ![]() | IXmlSerializable.WriteXml | 有关此成员的说明,请参见 IXmlSerializable.WriteXml。 |
DataSet 是 ADO.NET 结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。 DataSet 由一组 DataTable 对象组成,您可使这些对象与 DataRelation 对象互相关联。 您还可通过使用 UniqueConstraint 和 ForeignKeyConstraint 对象在 DataSet 中实施数据完整性。 有关使用 DataSet 对象的详细信息,请参见 DataSet、DataTable 和 DataView (ADO.NET)。
尽管 DataTable 对象中包含数据,但是 DataRelationCollection 允许您遍览表的层次结构。 这些表包含在通过 Tables 属性访问的 DataTableCollection 中。 当访问 DataTable 对象时,请注意它们是按条件区分大小写的。 例如,如果一个 DataTable 被命名为“mydatatable”,另一个被命名为“Mydatatable”,则用于搜索其中一个表的字符串被认为是区分大小写的。 但是,如果“mydatatable”存在而“Mydatatable”不存在,则认为该搜索字符串不区分大小写。 有关使用 DataTable 对象的更多信息,请参见创建数据表 (ADO.NET)。
DataSet 可将数据和架构作为 XML 文档进行读写。 数据和架构可通过 HTTP 传输,并在支持 XML 的任何平台上被任何应用程序使用。 可使用 WriteXmlSchema 方法将架构保存为 XML 架构,并且可以使用 WriteXml 方法保存架构和数据。 若要读取既包含架构也包含数据的 XML 文档,请使用 ReadXml 方法。
在典型的多层实现中,用于创建和刷新 DataSet 并依次更新原始数据的步骤包括:
-
通过 DataAdapter 使用数据源中的数据生成和填充 DataSet 中的每个 DataTable。
-
调用 GetChanges 方法以创建只反映对数据进行的更改的第二个 DataSet。
-
调用 DataAdapter 的 Update 方法,并将第二个 DataSet 作为参数传递。
-
调用 Merge 方法将第二个 DataSet 中的更改合并到第一个中。
-
针对 DataSet 调用 AcceptChanges。 或者,调用 RejectChanges 以取消更改。
![]() |
---|
DataSet 和 DataTable 对象从 MarshalByValueComponent 继承而来,并支持用于远程处理的 ISerializable 接口。 这些是仅有的可以远程处理的 ADO.NET 对象。 |
![]() |
---|
继承自 DataSet 的类不是由垃圾回收器完成的,原因是在 DataSet 中已取消终结器。 派生类可以在其构造函数中调用 ReRegisterForFinalize 方法以允许垃圾回收器完成该类。 |
下面的示例由几种方法组成,这些方法互相结合,从 Northwind 数据库中创建并填充 DataSet。
1 using System; 2 using System.Data; 3 using System.Data.SqlClient; 4 5 namespace Microsoft.AdoNet.DataSetDemo 6 { 7 class NorthwindDataSet 8 { 9 static void Main() 10 { 11 string connectionString = GetConnectionString(); 12 ConnectToData(connectionString); 13 } 14 15 private static void ConnectToData(string connectionString) 16 { 17 //Create a SqlConnection to the Northwind database. 18 using (SqlConnection connection = 19 new SqlConnection(connectionString)) 20 { 21 //Create a SqlDataAdapter for the Suppliers table. 22 SqlDataAdapter adapter = new SqlDataAdapter(); 23 24 // A table mapping names the DataTable. 25 adapter.TableMappings.Add("Table", "Suppliers"); 26 27 // Open the connection. 28 connection.Open(); 29 Console.WriteLine("The SqlConnection is open."); 30 31 // Create a SqlCommand to retrieve Suppliers data. 32 SqlCommand command = new SqlCommand( 33 "SELECT SupplierID, CompanyName FROM dbo.Suppliers;", 34 connection); 35 command.CommandType = CommandType.Text; 36 37 // Set the SqlDataAdapter's SelectCommand. 38 adapter.SelectCommand = command; 39 40 // Fill the DataSet. 41 DataSet dataSet = new DataSet("Suppliers"); 42 adapter.Fill(dataSet); 43 44 // Create a second Adapter and Command to get 45 // the Products table, a child table of Suppliers. 46 SqlDataAdapter productsAdapter = new SqlDataAdapter(); 47 productsAdapter.TableMappings.Add("Table", "Products"); 48 49 SqlCommand productsCommand = new SqlCommand( 50 "SELECT ProductID, SupplierID FROM dbo.Products;", 51 connection); 52 productsAdapter.SelectCommand = productsCommand; 53 54 // Fill the DataSet. 55 productsAdapter.Fill(dataSet); 56 57 // Close the connection. 58 connection.Close(); 59 Console.WriteLine("The SqlConnection is closed."); 60 61 // Create a DataRelation to link the two tables 62 // based on the SupplierID. 63 DataColumn parentColumn = 64 dataSet.Tables["Suppliers"].Columns["SupplierID"]; 65 DataColumn childColumn = 66 dataSet.Tables["Products"].Columns["SupplierID"]; 67 DataRelation relation = 68 new System.Data.DataRelation("SuppliersProducts", 69 parentColumn, childColumn); 70 dataSet.Relations.Add(relation); 71 Console.WriteLine( 72 "The {0} DataRelation has been created.", 73 relation.RelationName); 74 } 75 } 76 77 static private string GetConnectionString() 78 { 79 // To avoid storing the connection string in your code, 80 // you can retrieve it from a configuration file. 81 return "Data Source=(local);Initial Catalog=Northwind;" 82 + "Integrated Security=SSPI"; 83 } 84 } 85 }
.NET Framework
受以下版本支持:4、3.5、3.0、2.0、1.1、1.0.NET Framework Client Profile
受以下版本支持:4、3.5 SP1Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2
.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。
该类型对于多线程读操作是安全的。 您必须使任何写操作同步。