初识ADO.NET

来源:互联网 发布:windows pyqt5 编辑:程序博客网 时间:2024/06/06 03:45

熟悉ADO编程的程序员都知道,ADO中最重要的是引入了三个智能指针:Connection_PtrCommand_PtrRecordset_Ptr。而在.NET的框架下,ADO.NETADO存在着很大的不同,ADO.NET为程序员提供了更高层的接口和组件,数据处理采用面向连接的双层模型。同时,为方便程序员在断开方式下处理数据,ADO.NET提供了数据处理中介工具DataAdapter组件和能够独立于数据源之外的缓冲数据集DataSet组件。下面我们就借助ADO.NET处理数据的框架来认识一下DataAdapterDataSet的工作流程:

 

DataAdapter:数据适配器,提供了两个很重要的方法:FillUpdate,该组件可以看做是一个工具,如果把DataSet看做一个数据仓库的话,那么DataAdapter就可以看作是一辆运输车,是用来FillUpdate的工具,而DataSet的数据集则是Fill的对象,数据库是Update的对象。

DataSet:独立于数据源外,用来临时存放数据的数据仓库或者称为数据集,因此可以很好的支持断开方式的数据处理。DataSet的基本结构如下:

 

DataSet是一系列数据表的集合,相当于数据源的一个快照,需要注意的是,DataSet中的数据是置于内存的。

 

下面举一个简单的例子以了解DataAdapterDataSet的用法:

        DataSet ds = new DataSet();

        OleDbCommand m_AccessComm;

        OleDbDataAdapter m_AccessAdapter;

OleDbConnection m_ADOConn = new OleDbConnection();

m_ADOConn.ConnectionString = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = .//spinfo.mdb";

            m_ADOConn.Open();//数据库连接并打开

m_AccessComm = new OleDbCommand("Select * From spinfo_rec", m_ADOConn);

            m_AccessAdapter = new OleDbDataAdapter(m_AccessComm);

            m_AccessAdapter.Fill(ds);

            dataGridView1.DataSource = ds.Tables[0];//DataGridView控件绑定数据源并显示

以上是用DataGridView控件来显示Access数据库文件spinfo.mdb中的表spinfo_rec的信息,当我们在DataGridView中修改数据后,可以刷新DataSet,通过DataAdapterUpdate方法来刷新源数据库。

OleDbCommandBuilder dcb = new OleDbCommandBuilder(m_AccessAdapter);

            m_AccessAdapter.SelectCommand = new OleDbCommand("SELECT * FROM spinfo_rec",m_ADOConn);

            m_AccessAdapter.Update(ds);//刷新DataSet的同时也将源数据库中的表刷新

            //清除DataSet内容,重新将更新后的的数据库内容FillDataSet

ds.Tables[0].Clear();

            m_AccessAdapter.Fill(ds,"spinfo_rec");

由于之前已经将DataGridView绑定到ds,所以ds的内容就更新到了DataGridView中。

 

在上面的例子中,使用到了OleDbCommandBuilder, 这个组件比较有意思,他会自动生成数据库的INSERT/UPDATE/DELETE命令,而SELECT命令则需要事先指定。而且它会自动根据数据的变化来自动判断选择使用哪种SQL语句。有兴趣的朋友可以直接在WinForm中拖一个DataAdapter的控件,看看dataAdapterSelectCommand/InsertCommand/UpdateCommand/DeleteCommand是如何写的。

 

原创粉丝点击