刚学完VC技术内幕,要用到数据库编程,不知这几种技术哪一种好啊,请各位指教

解决方案 »

  1.   

    1.开放数据库连接(ODBC API):提供了一个通用的编程接口,允许程序与多种不同的数据库连接。它为Oracle,SQL Server,MS Excel等都提供了驱动程序,使得用户可以使用SQL语句对数据库进行直接的底层功能操作。在使用ODBC API时,用户须引入的头文件为"sql.h","sqlext.h","sqltypes.h"。用ODBC API创建数据库应用程序遵循一定的基本步骤:  第一步是分配ODBC环境,使一些内部结构初始化。完成这一步,须分配一个SQLHENV类型的变量在ODBC环境中做句柄使用。  第二步是为将要使用的每一个数据源分配一个连接句柄,由函数SQLALLocHandle()完成。  第三步是使用SQLConnect()把连接句柄与数据库连接,可以先通过SQLSetConnectAttr()设置连接属性。  然后就可以进行SQL语句的操作,限于篇幅,相关的函数就不具体介绍了,读者可以参考相关书籍。  操作完成后,用户取回相应的结果,就可以取消与数据库的连接。  最后需要释放ODBC环境。  ODBC API的特点是功能强大丰富,提供了异步操作,事务处理等高级功能,但相应的编程复杂,工作量大。  2.MFC ODBC类:MFC1.5后的版本里引入封装了ODBC功能的类。通过这些类提供与ODBC的接口,使得用户可以不须处理ODBC API中的繁杂处理就可以进行数据库操作。主要的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类派生,以三个继承的成员变量反映对数据库操作时的异常:   m_nRetCode:以ODBC返回代码(SQL_RETURN)的形式表明造成异常的原因。   m_strError:字符串,描述造成抛出异常的错误原因。   m_strStateNativeOrigin:字符串,用以描述以ODBC错误代码表示的异常错误。  MFC数据库类成员函数都能抛出CDBException类型的异常,所以在代码对数据库进行操作后监测异常是正确做法。  MFC ODBC类在实际开发中应用最广,因为它功能丰富,操作相对简便。3.MFC DAO(数据访问对象)编程:DAO用于和微软的Access数据库接口。在数据库应用程序如果只需与Access数据库接口时,使用DAO编程较方便。其主要类如下。  CDaoWorkspace:CDaoWorkspace对象可以让一个用户管理从登陆到离开期间,指定的密码保护的数据库会话全过程。大多数情况下不要多个工作区也不要创建明确的工作区对象。因为在打开数据库和记录集对象时,它们可以使用DAO缺省工作区。  CDaoDatabase:代表一个连接,类似上述CDatabase类。   CDaoRecordSet:用来选择记录集并操作,类似上述CRecordSet类。   CDaoRecordView:类似上述CRecordView类。   CDaoException:类似上述CDBException类。   CDaoTableDef:表示基本表或附加表的定义。每个DAO数据库对象包括一个称为TableDef的收集,包含所有存储的DAO表定义对象。CDaoTableDef对象可以用来控制表定义。   CDaoQueryDef:CDaoQueryDef对象表示了一个查询定义(querydef)。   CDaoFieldExchange:支持数据库类使用的DAO字段交换(DFX)例程。也可处理事务,类似MFC ODBC类。  MFC DAO仅用来支持Access数据库,应用范围相对固定。  4.OLE DB:OLE DB在数据提供程序和用户之间提供了灵活的组件对象模型(COM)接口,这种灵活性有时会使得操作复杂化。OLE DB框架定义了应用的三个基本类。  数据提供程序Data Provider:拥有自己的数据并以表格形式显示数据的应用程序。提供OLE DB的行集COM接口,期显示范围可以从单一数据表格的简单提供者知道更复杂的分布式数据库系统。  使用者Consumers:使用OLE DB接口对存储在数据提供程序中的数据进行控制的应用程序。用户应用程序归为使用类。  服务提供程序Service Provider:是数据提供程序和使用者的组合。服务提供程序没有自己的数据,但使用  OLE DB使用者接口来访问存储在数据提供程序中的数据。然后,服务提供程序通过打开数据提供程序接口使得数据对使用者有效。服务提供程序常用于向应用程序提供高层次服务,比如高级分布式查询。  OLE DB编程时,用户使用组件对象开发应用程序。这些组件有:   枚举器:用于列出可用的数据源;   数据源:代表单独的数据和服务提供程序,用于创建对话;   对话:用于创建事务和命令;   事务:用于将多个操作归并为单一事务处理;   命令:用于向数据源发送文本命令(SQL),返回行集;   错误:用于获得错误信息。  5.ActiveX数据对象(ADO):是微软提供的面向对象的接口,与OLE DB类似,但接口更简单,具有更广泛的特征数组和更高程度的灵活性。ADO基于COM,提供编程语言可利用的对象,除了面向VC++,还提供面向其他各种开发工具的应用,如VB,VJ等。ADO在服务器应用方面非常有用,特别是对于动态服务器页面ASP(Active Server Page)。  ADO对象结构类似于OLE DB,但并不依靠对象层次。大多数情况下,用户只需要创建并只使用需要处理的对象。
      

  2.   

    反正别学DAO。
     我开始用它做程序中的数据库相关部分,结果老板说 DAO is dying...可以选ADO, Code-to-functionality ratio 相对低,对Object model支持好
      

  3.   

    ado是比较新的技术,速度也可以。应该学ado。
      

  4.   

    呵呵,odbc灵活,但复杂。
    ado强大
      

  5.   

    OLEDB,因为我们写成程序后,根本不用安装什么数据库环境,直接拷到什么都没装的操作系统就可以运行,以后的发展方向就是这方面。
      

  6.   

    可以说一说ODBC与ADO在速度、稳定性、适用性再说一说啊,谢谢各位。
      

  7.   

    忘了说它的优点,它在底层直接读取数据库,速度是别的比不上的,而且可以访问任何的数据库,包括Excel和txt等普通数据保存文件;不过很多的东西都要自己写,程序代码比较长。但是有了速度,只是自己辛苦,别人用的开心,我们的软件才值钱啊。
      

  8.   

    看你现在会马上用上的是什么了,单机的数据库用dao,要做底层控制就学odbc,ole;db没搞了,高级的应用就学ado.
    个人建议,仅供参考!
      

  9.   

    ADO 和 RDO、DAO 的比较
    ADO 并不是自动和您现存的数据访问应用程序代码兼容的。当 ADO 封装 DAO 和 RDO 的功能性的时候,您必须将许多语言要素转换为 ADO 语法。在某些情况下,这将意味着您现存代码的某些功能的一个简单转换。在其他情况下,最佳的做法可能是用 ADO 的新功能重写该应用程序。DAO (Data Access Objects) 数据访问对象是第一个面向对象的接口,它显露了 Microsoft Jet 数据库引擎(由 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 象直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或小范围本地分布使用。RDO (Remote Data Objects) 远程数据对象是一个到 ODBC 的、面向对象的数据访问接口,它同易于使用的 DAO style组合在一起,提供了一个接口,形式上展示出所有 ODBC 的底层功能和灵活性。尽管 RDO 在很好地访问 Jet 或 ISAM 数据库方面受到限制,而且它只能通过现存的 ODBC 驱动程序来访问关系数据库。但是,RDO 已被证明是许多 SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO 提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。ADO 是 DAO/RDO 的后继产物。ADO 2.0在功能上与 RDO 更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO “扩展”了 DAO 和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。例如,ADO 没有与 rdoEngine 和 rdoEnvironment 对象相等同的对象,可以显露 ODBC 驱动程序管理器和 hEnv 接口。尽管事实上您的接口可能是通过 ODBC OLE DB 服务提供程序实现的,但您当前也不能从 ADO 中创建 ODBC 数据源。包含在 DAO 和 RDO 模型中的许多功能被合并为单个对象,这样就生成了一个简单得多的对象模型。然而,由于这个原因,起初您可能会觉得找到合适的 ADO 对象、集合、属性、方法,或事件非常困难。与 DAO 和 RDO不同的是,尽管 ADO 对象是分层结构的,但在分层结构范围之外也是可以创建的。不过,也应当注意,ADO 当前并不支持 DAO 的所有功能。ADO 主要包括 RDO 风格的功能性,以便和 OLE DB 数据源交互,另外还包括远程和 DHTML 技术。一般说来,在 ADO 的演化过程中,马上把大多数 DAO 应用程序(except possibly是那些使用 ODBCDirect 的应用程序)移植到 ADO 上可能为时太早,因为当前的 ADO 并不支持数据定义 (DDL)、用户、组,等等。不过,如果您只将 DAO 用于客户—服务器应用程序,而并不依赖于 Jet 数据库引擎或不使用 DDL,那么您现在就可能移植到 ADO。最终,Microsoft 将提供一个 ADO DDL 部件来帮助进行 DAO 到 ADO 的移植,并为 OLE DB 供应商提供一般的 DDL 支持。
      

  10.   

    偶刚开始用数据库的时候就用DAO,感觉还可以,习惯了,等我做完这个项目后再学ADO吧。—————————————————————————————————
    ┏━★━━◆━━★━┓ 
    ♂欢|◢CSDN◣|使♂        ▲自由保存帖子,浏览,关注检测
    ┃迎|◥论坛助手◤|用┃        ▲完善的CSDN客户端工具
    ┗━☆━━◇━━━☆┛       ▲自动添加签名......让你更快,更爽,更方便地上CSDN...
    http://www.csdn.net/expert/topic/573/573604.xml
    http://www.chinaok.net/csdn/csdn.zip