图文演示ADO.NET数据集工作原理
我想程序员都知道数据集的概念,但是你知道ADO.NET数据集的工作原理机制吗?我在网上收集了许多资料,自己也从工作中总结了一点经验。下面我们就一起来看看吧!ADO.NET数据集数据集DataSet的工作原理请参见图所示:
![DataSet的工作原理](http://images.51cto.com/files/uploadimg/20091029/1005500.jpg)
图所示的过程就是ADO.NET数据集DataSet的工作原理。首先,客户端与数据库服务器端建立连接。然后,由客户端应用程序向数据库服务器发送数据请求。数据库服务器接到数据请求后,经检索选择出符合条件的数据,发送给客户端的数据集,这时连接可以断开。接下来,数据集以数据绑定控件或直接引用等形式将数据传递给客户端应用程序。如果客户端应用程序在运行过程中有数据发生变化,它会修改数据集里的数据。当应用程序运行到某一阶段时,比如应用程序需要保存数据,就可以再次建立客户端到数据库服务器端的连接,将数据集里的被修改数据提交给服务器,最后再次断开连接。
把这种不需要实时连接数据库的工作过程叫做面向非连接的数据访问。在DataSet对象中处理数据时,客户端应用程序仅仅是在本地机器上的内存中使用数据的副本。这缓解了数据库服务器和网络的压力,因为只有在首次获取数据和编辑完数据并将其回传到数据库时,才能连接到数据库服务器。
虽然这种面向非连接的数据结构有优点,但还是存在问题。当处于断开环境时,客户端应用程序并不知道其他客户端应用程序对数据库中原数据所做的改动。很有可能得到的是过时的信息。
案例学习:通过编码创建DataSet对象
新建窗体命名为Form5.cs,双击Form5的窗体界面,进入后台编码区域,在其窗体加载初始化事件中键入如下代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
private void Form5_Load(object sender, EventArgs e)
{
//建立SQL Server数据库连接
string connstring = "Data Source=(local);Initial Catalog=school;User ID=sa";
SqlConnection connection = new SqlConnection(connstring);
connection.Open();
string sqlstring = "select * from student";
SqlCommand mycom = new SqlCommand(sqlstring, connection);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = mycom;
//创建DataSet对象
DataSet SQLds = new DataSet();
adapter.Fill(SQLds);//通过SqlDataAdapter对象填充DataSet对象
//释放数据库连接资源。要养成了好的编程习惯,操作完数据后记住打扫垃圾!
connection.Dispose();
connection.Close();
connection = null;
}
{
//建立SQL Server数据库连接
string connstring = "Data Source=(local);Initial Catalog=school;User ID=sa";
SqlConnection connection = new SqlConnection(connstring);
connection.Open();
string sqlstring = "select * from student";
SqlCommand mycom = new SqlCommand(sqlstring, connection);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = mycom;
//创建DataSet对象
DataSet SQLds = new DataSet();
adapter.Fill(SQLds);//通过SqlDataAdapter对象填充DataSet对象
//释放数据库连接资源。要养成了好的编程习惯,操作完数据后记住打扫垃圾!
connection.Dispose();
connection.Close();
connection = null;
}