学习ADO.NET时,你可能会遇到ADO.NET Access问题,这里将介绍ADO.NET Access问题的解决方法,在这里拿出来和大家分享一下。在示例程序中我们仍采用原库结构,数据库名Demo.mdb,库内表名DemoTable,表内字段名为Name(姓名)和Age(年龄)的两个字段,来构造示例程序操作所需的ADO.NET Access数据库,这也和上两篇文章的示例源码中的库结构相兼容。
下面让我们看看ADO数据库访问技术使用的基本步骤及方法:
首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现:
其次,在程序初始过程中需要初始化组件,一般可以用CoInitialize(NULL);来实现,这种方法在结束时要关闭初始化的COM,可以用下面语句CoUnInitialize();来实现。在MFC中还可以采用另一种方法来实现初始化COM,这种方法只需要一条语句便可以自动为我们实现初始化COM和结束时关闭COM的操作,语句如下所示: AfxOleInit();
接着,就可以直接使用ADO的操作了。我们经常使用的只是前面用#import语句引用类型库时,生成的包装类.tlh中声明的智能指针中的三个,它们分别是_ConnectionPtr、_RecordsetPtr和_CommandPtr。下面分别对它们的使用方法进行介绍:
在ADO中,以上所有这些方式与不同类型的游标相对应 .在文中,你将会发现,ADO.NET虽然与ADO不同,但它具备了ADO的所有功能.相对照来说,你的代码将从实际的数据源及其物理存储媒介和格式中抽取数据.#t#
ADO.NET能够使DataSet 和 DataReader 将数据从数据源中抽取出来.前者是记录在内存中的缓存,你可以从任意方向访问并随意作出修改. 后者是高度优化的对象,在只读纪录集中以仅向前方式向前移动。注: DataSet 看起来象是静态游标,但实际上,在.NET中,与ADO只读游标相对应的是DataReader 对象.
在ADO.NET中,虽然对于服务器端的游标不提供任何支持,但这不意味着你就不能使用游标.实际上,你所需要做的步骤是在.NET中输入ADO库.你只需在references node上单击右键,就可以在你自己的程序里运行本地ADO 对象.
但是我个人认为,在你想转向.NET时,请慎重考虑. 首先,请务必完全输入ADO, 这不会花费太多时间和精力,这是向.NET迈出的第一步,.但是,这仅仅是万里长征的第一步而且也是通向.NET必须的一步. .NET的真正附加值是基于一个均匀的,持续稳定的接口以及本地classes的广为应用之上的.关于COM libraries是可以被支持的,合理的,但不被鼓励的,因为它仅仅是个短期解决方案,或者是一个过渡步骤.