数据库编程用ADO好,还是ODBC好?

还有其他的吗?
说下区别~!

这要看具体情况,如果对数据库的底层访问很看重,则用ODBC,如果只是需要一个数据库的接口,而具体细节不是很重要的话,则用ADO。大多数情况下,使用ADO。
ODBC:
直接使用ODBC API编写应用程序需要编制大量代码,Visual C++提供了MFC ODBC类,其中封装了ODBC API,因此,使用MFC来创建ODBC的应用程序非常简便。主要的MFC ODBC类如下所示。
CDatabase类:一个CDatabase对象表示一个到数据源的连接,通过它可以操作数据源。应用程序可使用多个CDatabase对象,构造一个对象并调用OpenEx()成员函数打开一个连接。接着构造CRecordSet对象以操作连接的数据源,并向 CDatabase对象传递记录集构造程序指针。完成后用Close()成员函数销毁CDatabase对象。一般情况下并不需要直接使用CDatabase对象,因为CRecordSet对象可以实现大多数的功能。但是在进行事务处理时,CDatabase就起到关键作用。事务(Transaction)指的是将一系列对数据源的更新放在一起,同时提交或一个也不提交,为的是确保多用户对数据源同时操作时的数据正确性。
CRecordSet类:一个CRecordSet对象代表一个从数据源选择的一组记录的集合——记录集。记录集有两种形式,snapshot和dynaset,前者表示数据的静态试图,后者表示记录集和其他用户对数据库的更新保持同步。通过CRecordSet对象,用户可以对数据库中的记录进行各种操作。
CRecordView类:CRecordView对象是在空间中显示数据库记录的视图。这种视图是一种直接连到CRecordSet对象的格式视图,它从一个对话框模板资源创建,并将CRecordSet对象的字段显示在对话框模板的控件中。对象利用DDX和RFX机制,使格式上的控件和记录集的字段之间数据移动自动化,也就是说,用户不用编写一行代码就可以实现简单的数据库记录查看操作。
CDBException:由Cexception类派生,以3个继承的成员变量反映对数据库操作时的异常。
m_nRetCode:以ODBC返回代码(SQL_RETURN)的形式表明造成异常的原因。
m_strError:字符串,描述造成抛出异常的错误原因。
m_strStateNativeOrigin:字符串,用以描述以ODBC错误代码表示的异常错误。
MFC数据库类成员函数都能抛出CDBException类型异常,所以在代码对数据库进行操作后监测异常是正确的做法。
ADO:
ADO技术是基于OLE DB的访问接口,它继承了OLE DB技术的优点,并且,ADO对OLE DB的接口作了封装,定义了ADO对象,使程序开发得到简化。ADO技术属于数据库访问的高层接口。ADO基于COM,提供编程语言可利用的对象,除了面向VC++,还提供面向其他各种开发工具的应用,如VB、VJ等。ADO在服务器应用方面非常有效,特别是对于动态服务器页面(ASP,Active Server Page)的支持。
ADO对象结构类似于OLE DB,但并不依靠对象层次。大多数情况下,用户只需要创建并使用需要处理的对象。ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。ADO 在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。下面的对象类组成了ADO接口。
Connection:用于表示与数据库的连接,以及处理一些命令和事务。
Command:用于处理传送给数据源的命令。
Recordset:用于处理数据的表格集,包括获取和修改数据。
Field:用于表示记录集中的列信息,包括列值和其他信息。
Parameter:在传送给数据源的命令之间传递数据。
Property:用于操作在ADO中使用的其他对象的详细属性。
Error:用于获得可能发生的详细错误信息。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-25
VC环境下推荐使用ADO,ADO采用COM接口,读取速度快,而且程序可移植,只要数据库的路径一致。
ODBC效率也行吧,唯一的缺点就是连接前要在程序所在的电脑上重新配置一下数据源,也就是把你的程序拷贝到别人的电脑上,必须配置一下才能用,当然写代码也可以,但不如ADO方便。本回答被提问者采纳
第2个回答  2009-06-18
都是数据库访问技术接口,各有优势~~
不过我个人推荐用ADO,其个人原因只有一个:那就是不用配置数据源,发布起来方便! :)
第3个回答  2009-06-18
用ODBC,感觉这个好用些。功能强大,移植性也很好。
第4个回答  2009-06-18
ADO 是不是.NET的 ?
相似回答