• C# DataSet


      DataSet 是C#中用来存储数据库数据的。其实,它的作用是在内存中模拟数据库。我们现实生活中的数据库从大到小的基本结构类似于:数据库实例,表,列,行。在C#语言中,我们在内存中也模拟出了一个这样的关系型数据模型。对应关系如下表:

    数据库  DataSet

    表    DataTable

    列    DataColumn

    行    DataRow

      有了这一样模拟之后,我们在操作数据库和内存的时候,就可以使用同样的思维模型了。


      DataSet 和 物理数据库是两个客体,要使这两个客体保持一致,就需要使用 DataAdapter 类来同步两个客体。一般来说操作流程是:使用 DataAdapter 把物理数据库中的数据填充到 DataSet 中的 DataTable 里。当我们对内存中的 DataSet 做了增、删、改操作后,可以使用 DataAdapter 同步回数据库。

      MSDN的描述如下:

      1. 通过 DataAdapter 使用数据源中的数据生成和填充 DataSet 中的每个DataTable

      2. 通过添加、更新或删除 DataRow 对象更改单个 DataTable 对象中的数据。

      3. 调用 GetChanges 方法以创建只反映对数据进行的更改的第二个DataSet

      4. 调用 DataAdapter 的 Update 方法,并将第二个 DataSet 作为参数传递。

      5. 调用 Merge 方法将第二个 DataSet 中的更改合并到第一个中。

      6. 针对 DataSet 调用 AcceptChanges。或者,调用 RejectChanges 以取消更改。

     

    一、 创建dataset

      1. 创建

      可以选择指定一个名称参数。如果没有为 DataSet 指定名称,则默认设置为“NewDataSet”。

    DataSet customerOrders = new DataSet("CustomerOrders");

      2. 复制

      DataSet 的原样副本,其中包含架构、数据、行状态信息和行版本。  

    DataSet copyDataSet = customerDataSet.Copy();

      创建包含现有 DataSet 的架构但仅包含已修改行的 DataSet。可以返回已修改的所有行或者指定特定的 DataRowState。

    // Copy all changes.
    DataSet changeDataSet = customerDataSet.GetChanges();
     // Copy only new rows.
    DataSet addedDataSet = customerDataSet.GetChanges(DataRowState.Added);
    

      仅复制 DataSet 的架构(即关系结构),而不复制任何行。可以使用 ImportRow 将行导入现有 DataTable。

    DataSet germanyCustomers = customerDataSet.Clone();

    二、 向 DataSet 添加 DataTable

      我们可以创建 DataTable 对象,并将其添加到现有 DataSet 中。还可以使用 PrimaryKey 和 Unique 属性为 DataTable 设置约束信息。

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

    DataSet customerOrders = new DataSet("CustomerOrders");
    DataTable ordersTable = customerOrders.Tables.Add("Orders");
    DataColumn pkOrderID
    = ordersTable.Columns.Add("OrderID", typeof(Int32)); ordersTable.Columns.Add("OrderQuantity", typeof(Int32)); ordersTable.Columns.Add("CompanyName", typeof(string)); ordersTable.PrimaryKey = new DataColumn[] { pkOrderID };

     参考文献:http://msdn.microsoft.com/zh-cn/library/ss7fbaez(v=vs.90) //这个是3.5版本的,应该看这个

  • 相关阅读:
    C#自定义控件在添加引用后不显示在工具箱的解决方法
    DevExpress中SearchLookUpEdit用法总结
    div(固定宽度和不固定宽度)居中显示的方法总结
    php面向对象学习笔记
    在php中使用Memcache
    memcache的安装及管理
    使用Quartz.NET cron-like表达式
    SQL CHECK 约束&Case when 的使用方法
    IP地址地区信息查询API接口调用方法
    ASP使用webRequest实现跨域请求
  • 原文地址:https://www.cnblogs.com/fengkuangshubiaodian/p/2609158.html
Copyright © 2020-2023  润新知