趣味理解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: