ADO.NET与抽水的故事 系列五——水库管理——DataSet

趣味理解ADO.NET对象模型

水库管理——DataSet

DataSet是ADO.NET中最核心的成员之一,是各种基于.NET平台程序语言(如VB.NET、C#.NET、C++.NET)的数据库应用程序开发最常接触的类,这是因为DataSet在ADO.NET实现从数据库中抽取数据的作用。数据抽取后,DataSet就是数据的存放地,它是各种数据源(SQL Server 、OLE DB等)的数据在计算机内存的缓存,所以有时说DataSet可以看成是一个数据容器(又称数据集)。在客户端通过对DataSet的数据集读取、更新等操作,从而实现对数据源的同等操作。

DataSet的最大优点是离线(断开)和连接。DataSet既可以以离线方式,也可以以实时连接方式来操作数据库中的数据。这样的好处是大大减少了服务器端数据库的连接线程,从而大大地减少了服务器端的运行压力。所以,在数据量不大的情况下,使用DataSet是最好的选择。

DataSet的基本工作过程:应用程序一般并不直接对数据库进行操作(直接在程序中调用存储过程等除外),而是先完成和数据库的连接,接着通过数据适配器(DataAdapter)把数据库中的数据填入DataSet对象,然后客户端再通过读取DataSet来获得需要的数据,同样,在更新数据库中的数据时,也是首先更新DataSet,然后再通过DataSet和数据适配器将更新的数据同步地解释入数据库中。

下面列出了DataSet的一些常用操作。

1.创建DataSet 对象

初始化DataSet类的新实例。

public DataSet();

用给定名称初始化DataSet类的新实例。

public DataSet(string);

2.用DataAdapter填充DataSet

DataSet ds = new DataSet();

adapter.Fill(ds);

adapter.Fill(ds, "表名"); //用一个表去填充DataSet.

3.合并两个DataSet

string conString="data source=127.0.0.1;database=codematic;user id=sa;

password=";           

SqlConnection myConnection = new SqlConnection(conString);

myConnection.Open();

string strSQL = "SELECT * FROM P_Product";

DataSet ds1 = new DataSet();           

SqlDataAdapter adapter1 = new SqlDataAdapter(strSQL, myConnection);

adapter1.Fill(ds1, "Product");

strSQL = "SELECT * FROM P_Category";

DataSet ds2 = new DataSet();

SqlDataAdapter adapter2 = new SqlDataAdapter(strSQL, myConnection);

adapter2.Fill(ds2, "Category");

myConnection.Close();

           

//ds1就是合并后的DataSet

ds1.Merge(ds2, true, MissingSchemaAction.AddWithKey);

GridView1.DataSource = ds1.Tables["Product"];

GridView1.DataBind();

GridView2.DataSource = ds1.Tables["Category"];

GridView2.DataBind();

 

 

本文出自《亮剑.NET. .NET深入体验与实战精要》一书

《亮剑.NET: .NET深入体验与实战精要》

请使用浏览器的分享功能分享到微信等