我们知道程序界有一个著名公式是:程序=数据+算法。这充分说明了数据在程序设计中的重要地位。而当数据规模达到一定程度的时候,为了达到数据的快速存储和快速访问,就必须使用数据库(Database)来进行数据的存储。因为数据库是按照数据结构来组织、存储和管理数据的仓库,利用数据库进行存储具有存储访问快速、管理方便、合理组织、减少数据的冗余度等优势。
数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。数据库模型有层次结构模型、网状结构模型、关系结构模型,本篇章主要介绍应用范围最广泛的关系型数据库的访问技术。
Visual C++数据库开发的特点
一、 丰富的数据库访问技术可供选择
Visual C++6.0提供了多种多样的数据库访问技术—ODBC API、MFC ODBC、DAO、OLE DB、ADO等。这些技术各有特点,用户可按自己的技术熟练程度及项目特点选择适合自己的开发技术。
二、 VC提供的可视化向导功能简化开发过程
利用VC提供的AppWizard和ClassWizard,用户可以方便地开发出性能优良的基于MFC的数据库应用程序。你甚至不需要编写一句代码,直接通过鼠标点选就能生成一个完整的简单数据库应用程序。
三、 强大的IDE编译器大大提高了开发的效率。
VC的IDE是目前世界上功能最强大的编译器之一。利用该IDE所提供的各种辅助工具可方便快速的进行程序编写、编译、链接、调试程序,相比一般的编译器在效率上有明显提高。
四、 开发方式灵活,开发难度适中
Visual C++进行数据库开发,可选择的开发方式多种多样。既可进行面向过程的开发,也可按面向对象的方式进行开发。既可直接调用汇编的代码,也可以通过DLL动态库的方式与其它程序语言进行混合编程。丰富的类库及COM库为开发提供了强大的支持。
五、 良好的架构使其具有较好的可扩展性
Visual C++具有面向对象编程的特性。通过抽象性、继承、重载、多态等特性,面向接口编程,可使整个数据库系统具有良好的架构,支持良好的扩展性。利用面向接口编程及COM组件编程技术,各个部件可进行无缝替换,极大的提高了程序的可扩展性及健壮性。
六、 程序执行效率高,运行速度快
我们知道,C++语言在高级语言里是属于与机器语言比较接近的语言,所以它的执行效率一般来说仅次于汇编语言。而且在执行效率要求比较高的地方,可以直接内嵌汇编,这大大提高了程序的执行效率。而且Visual C++更通过代码优化技术,可让程序的执行效率提高百分之十几。这是其它高级语言所无法比拟的。
Visual C++数据库开发技术
如前所述,Visual C++为数据库开发提供了多种多样的技术支持。用户可供选择的数据库访问技术包括ODBC(Open DataBase Connectivity)、MFC ODBC(Microsoft Foundation Classes ODBC)、DAO (Data Access Object)、OLE DB(Object Link and Embedding DataBase)、ADO(ActiveX Data Object)。这些技术都有各自的特点,适用范围也不尽相同,所以用户一般需要根据技术的特点和项目的特征进行恰当的选择。
1、ODBC
优点:ODBC是客户应用程序访问关系数据库时提供的一个统一的接口,ODBC提供了一套统一的API应对不同的数据库访问,这样使应用程序可以只针对ODBC的API来进行程序编写,就可访问任何提供了ODBC驱动程序的数据库。此外,ODBC还是一种业界标准,几乎所有的关系数据库都提供了相应的ODBC驱动程序,所以具有广泛的应用。
缺点:不过由于ODBC只能用于关系型数据库,使得ODBC很难访问对象数据库及其它非关系型数据库。而且由于ODBC是一个接口层,需要为各种不同的数据库提供适应性,必然会使效率有所降低。此外,在使用ODBC时需要向系统注册一个数据源,这增加一定的配置难度。还需要通过大量的ODBC统一接口API来对数据库访问,也提高了一定的开发难度。
2、MFC ODBC
优缺点:因为MFC ODBC只是通过MFC类库MFC ODBC对ODBC的API进行了一层简单封装,使API更容易被使用,所以它的优缺点就跟ODBC一样,只是降低了一定的开发难度。
3、DAO
优点:DAO(数据访问对象)是一种应用程序编程接口(API),它是微软提供的用于访问Microsoft Jet数据库文件(*.mdb)的强有力的数据库开发工具。DAO是微软的第一个面向对象的数据库接口,各个DAO对象协同工作。通过Jet函数,它还可以访问其他的结构化查询语言(SQL)数据库。因为DAO直接内嵌在ACCESS运行环境中,DAO是访问mdb文件有最高效率的数据库引擎。MFC也提供了一组DAO类,封装了底层的API,而且VC向导也提供了对DAO的支持,从而大大简化了程序的开发。此外不必在ODBC管理器中注册DSN。
缺点:DAO是基于Microsoft Jet引擎的,只能访问Jet引擎支持的桌面数据库。所以要访问Sql Server必须通过ODBC来进行访问。
4、OLE DB
优点:OLE DB是Visual C++开发数据库应用中提供的新技术。OLE DB对所有的文件系统包括关系数据库和非关系数据库都提供了统一的接口。所以使用OLE DB可以对大部分数据库进行广泛的支持。同时它是低级应用程序接口,所以在效率上比ODBC高。
缺点:直接使用OLE DB来设计数据库应用程序需要大量的代码。即便可以通过ATL模板来减少一定的工作量,其开发难度也是相对较大的。可以说,他是所有数据库编程接口中难度最大的。
5、ADO
优点:ADO是一种面向对象的编程接口,它向我们提供了一个熟悉的,高层的对OLE DB的Automation封装接口。它继承了OLE DB技术的优点,具有易于使用、访问效率高、功能强大的特点。因为是面向对象的,内部通过各个对象相互作用实现。既可访问关系型数据库,也可访问非关系型数据库。
缺点:唯一缺点应该是基于COM技术,所以不能跨平台使用,只能用在支持COM接口的机器上,也就是微软的视窗系统了。对于使用VC++来进行开发的话,也不能算是一个缺点了。