初识ADO.NET

熟悉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是如何写的。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值