社区
数据库
帖子详情
VC6访问SQL2000和Access用ADO都能实现插入数据和访问数据吗?
jackfeige
2008-12-07 12:51:21
ADO和DAO还有ODBC有啥区别?哪个最方便更普遍?
我是新人刚开始数据库方面的编程,不想走歧路,忘高人指教,到底学哪个更普及?
...全文
167
5
打赏
收藏
VC6访问SQL2000和Access用ADO都能实现插入数据和访问数据吗?
ADO和DAO还有ODBC有啥区别?哪个最方便更普遍? 我是新人刚开始数据库方面的编程,不想走歧路,忘高人指教,到底学哪个更普及?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wqvbjhc
2008-12-07
打赏
举报
回复
ADO
来自ITwiki,开放的中文IT百科
Jump to: navigation, <jumptoSearch>
微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。
ADO被设计来继承微软早期的数据访问对象层,包括RDO (Remote Data Objects) 和DAO(Data Access Objects)。ADO在1996年冬被发布。
ADO包含一些顶层的对象:
连接,代表到数据库的连接
记录集,代表数据库记录的一个集合
命令,代表一个SQL命令
记录,代表数据的一个集合
流,代表数据的顺序集合
错误,代表数据库访问中产生的意外
字段,代表一个数据库字段
参数,代表一个SQL参数
属性,保存对象的信息
ADO组件的使用需要利用支持COM的高级语言,例如ASP中的VBScript或者Visual Basic,甚至Delphi,微软的竞争对手Borland的一个产品,现在也支持使用ADO来访问数据库。
在新的编程框架.NET Framework中, 微软也提供了一个面向Internet的版本的ADO,称为ADO.NET。其对象模型和传统ADO差别很大。
DAO
DAO(Database Access Object)使用Microsoft Jet数据库引擎来访问数据库。Microsoft Jet为象Access和Visual Basic这样的产品提供了数据引擎。
与ODBC一样,DAO提供了一组API供编程使用。MFC也提供了一组DAO类,封装了底层的API,从而大大简化了程序的开发。利用MFC的DAO类,用户可以编写独立于DBMS的应用程序。
DAO是从Visual C++4.0版开始引入的。一般地讲,DAO类提供了比ODBC类更广泛的支持。一方面,只要有ODBC驱动程序,使用Microsoft Jet的DAO就可以访问ODBC数据源。另一方面,由于DAO是基于Microsoft Jet引擎的,因而在访问Access数据库(即*.MDB文件)时具有很好的性能。
DAO和ODBC的相似之处
DAO类与ODBC类相比具有很多相似之处,这主要有下面几点:
二者都支持对各种ODBC数据源的访问。虽然二者使用的数据引擎不同,但都可以满足用户编写独立于DBMS的应用程序的要求。
DAO提供了与ODBC功能相似的MFC类。例如,DAO的CDaoDatabase类对应ODBC的CDatabase 类,CDaoRecordset对应CRecordset,CDaoRecordView对应CRecordView,CDaoException对应 CDBException。这些对应的类功能相似,它们的大部分成员函数都是相同的。
AppWizard和ClassWizard对使用DAO和ODBC对象的应用程序提供了类似的支持。
由于DAO和ODBC类的许多方面都比较相似,因此只要用户掌握了ODBC,就很容易学会使用DAO。实际上,用户可以很轻松地把数据库应用程序从ODBC移植到DAO。
Visual C++随盘提供了一个名为DaoEnrol的例子,该例实际上是Enroll的一个DAO版本。读者可以打开DaoEnrol工程看一看,它的源代码与 Enroll的极为相似。读者可以按照建立Enroll的步骤来建立DaoEnrol,其中只有若干个地方有差别,这主要有以下几点:
选取的数据源不同。在用AppWizard创建DaoEnrol时,以及在用ClassWizard创建CDaoRecordset类的派生类时,在Database Options对话框中应该选择DAO而不是ODBC。而且DAO的数据源是通过选择一个.MDB文件来指定的,即点击“...”按钮后在文件对话框中选择要访问的.MDB文件。
记录集的缺省类型不同。ODBC记录集的缺省类型是快照(Snapshot),而DAO则是动态集(Dynaset)。
参数化的方式不同。DAO记录集的m_strFilter和m_strSort中的参数不是“?”号,而是一个有意义的参数名。例如,在下面的过滤器中有一个名为CourseIDParam的参数。
m_pSet->m_strFilter ="CourseID = CourseIDParam";
在DoFieldExchange函数中,有下面两行:
pFX->SetFieldType(CDaoFieldExchange::param);
DFX_Text(pFX, _T("CourseIDParam"), m_strCourseIDParam);
DFX函数的第二个参数也是CourseIDParam。
处理异常的方式不同。例如,在删除记录时,对异常的处理如下所示:
try
{
m_pSet->Delete();
}
catch(CDaoException* e)
{
AfxMessageBox(e->
m_pErrorInfo->m_strDescription);
e->Delete();
}
除了上述差别外,AppWizard和ClassWizard也隐藏了一些细微的不同之处,例如,DAO记录集是使用是DFX数据交换机制(DAO record field exchange)而不是RFX,在DAO记录集的DoFieldExchange中使用的是DFX函数而不是RFX函数。
10.8.3 DAO的特色
DAO可以通过ODBC驱动程序访问ODBC数据源。但DAO是基于Microsoft Jet引擎的,通过该引擎,DAO可以直接访问Access、FoxPro、dBASE、Paradox、Excel和Lotus WK等数据库。CDaoDatabase类可以直接与这些数据库进行连接,而不必在ODBC管理器中注册DSN。例如,下面的代码用来打开一个 FoxPro数据库:
CDaoDatabase daoDb;
daoDb.Open( “”,FALSE,FALSE,"FoxPro 2.5;DATABASE=c:\\zyf");
CDaoDatabase::Open函数用来连接某个数据库,该函数的声明为:
virtual void Open( LPCTSTR lpszName, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = _T("") );
throw( CDaoException, CMemoryException );
参考资料:http://www.czvc.com/tech/Visual%20C++JC/chap10_8.htm裡面都有介紹
铁拳
2008-12-07
打赏
举报
回复
ADO
scq2099yt
2008-12-07
打赏
举报
回复
ADO
参见下面文章:
http://www.joyvc.cn/DatabaseTechnical/DatabaseTechnicalGroup00081.html
http://www.joyvc.cn/DatabaseTechnical/DatabaseTechnicalMain00001.html
oyljerry
2008-12-07
打赏
举报
回复
ADO更灵活,功能也更强大
zaodt
2008-12-07
打赏
举报
回复
ADO
在VC中用
ADO
访问
ACCESS
数据
库
主要是使用了
ADO
这个类,类中的各个函数在程序中都使用了。和
访问
SQL
SERVER
数据
库差不多。
vc+odbd+
sql
vc+
ado
+
access
Java的jdbc
数据
库操作
介绍
数据
库的建立和链接 vc+odbd+
sql
vc+
ado
+
access
Java的jdbc
用VC#.NET开发交互式CAD系统
用VC#.NET开发交互式CAD系统,包括结合GDI+和OPENGL两种方案。 联系平台客服可开发票。
VC++中
数据
库及其相关技术&使用
SQL
查询、操纵
数据
库
并添加记录、使用
ADO
在
数据
库中遍历、修改和删除记录、使用
ADO
Data和DataGrid控件
实现
遍历、修改、删除、添加、使用
ADO
直接操作
Access
数据
库、使用
ADO
向
数据
库添加BLOB
数据
(图像)、使用
ADO
从
数据
库中读出BLOB
数据
...
VC++使用
ADO
执行
SQL
命令DataGrid
数据
网格显示源码
VC++如何使用
ADO
执行
SQL
命令的实例源码,在输入框中输入
SQL
表达式,点击“执行”按钮,即可连接到
Access
,并读取出
数据
,而且通过本实例,还可以学习一下如何将
数据
绑定到DataGrid
数据
网格中显示,这倒是个挺实用...
数据库
4,011
社区成员
39,817
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章