[程序开发系列一]现流行数据库程序开发工具的比较分析
武汉华中师大信管系 谢刚
摘要:随着计算机技术不断发展,各种数据库编程工具也随着发展,使当今的大多数程序开发人员可以摆脱枯燥无味的用计算机指令或汇编语言开发软件,而是利用一系列高效的、具有良好可视化的编程工具去开发各种数据库软件,从而达到事半功倍的效果,但是现在市面上的数据库编程工具门类众多,优良不齐,比如vb,vc,dephi,pb等,对此我特别针对流行的开发语言介绍相应的较为成熟的数据库编程工具。
关键字:数据库编程 程序开发工具
1 几种数据库开发工具的介绍
1.1 vb
全称visual basic,它是以basic语言作为其基本语言的一种可视化编程工具。在中国乃至全世界都曾看到过它的身影,它曾是在中国最为流行的编程工具,到现在还占据着非常重要的地位,对于它的好坏大家都有一定的了解,vb作为一种较早出现的开发程序以其容易学习,开发效率较高,具有完善的帮助系统等优点曾影响了好几代编程人员,但是由于vb不具备跨平台这个特性,从而也决定了vb在未来的软件开发中将会逐渐地退出其历史舞台;它对组件技术的支持是基于com和activex,对于组件技术不断完善发展的今天,它也显出了它的落后性;同时vb在进行系统底层开发的时候也是相对复杂的,调用api函数需声明,调用不方便,不能进行ddk编程,不可能深入ring0编程,不能嵌套汇编;而且面向对象的特性差;网络功能和数据库功能也没有非常特出的表现,综上所述,vb作为一种可视化的开发工具由于其本身的局限性,导致了它在未来软件开发中逐步被其他工具所代替。
1.2 pb
全称powerbuilder,是开发mis系统和各类数据库跨平台的首选,使用简单,容易学习,容易掌握,在代码执行效率上也有相当出色的表现。pb是一种真正的4gl语言(第四代语言),可随意直接嵌套sql语句返回值被赋值到语句的变量中,支持语句级游标,存储过程和数据库函数,是一种类似sqlj的规范,数据访问中具有无可比拟的灵活性。但是它在系统底层开发中犯了跟vb一样的错误,调用api函数需声明,调用不方便,不能进行ddk编程,不可能深入ring0编程,不能嵌套汇编;在网络开发中提供了较多动态生成web页面的用户对象和服务以及系统对象,非常适合编写服务端动态web应用,有利于商业逻辑的封装;但是用于网络通讯的支持不足;静态页面定制支持有限,使得pb在网络方面的应用也不能非常广泛。面向对象特向也不是太好。
1.3 c++builder/delphi
它们都是基于vcl库的可视化开发工具,它们在组件技术的支持、数据库支持、系统底层开发支持、网络开发支持、面向对象特性等各方面都有相当不错的表现,并且学习使用较为容易,充分提现了所见即所得的可视化开发方法,开发效率高。由于两者都是borland 公司的产品,自然继承了该公司一贯以来的优良传统:代码执行效率高。但是,它们并不是毫无缺点,它们所作的最大不足之处就是他们的帮助系统在众多的编程工具中是属于比较差的。c++builder 的vcl库是基于object pascal(面向对象pascal),使得c++builder在程序的调试执行上都面向落后于其他编程工具。而delphi则是它的语言不够广泛,开发系统软件功能不足两个比较大的缺点。
1.4 visual c++
是基于mfc库的可视化的开发工具,从总体上说它是一个功能强大但是不便使用的一种工具。它在网络开发和多媒体开发都具有不俗的表现,帮助系统也做得非常不错(microsoft 在细节方面的处理往往都让人觉得亲切),但是虽然是使用c++作为基本语言,但是它在面向对象特性上却不够好,主要是为了兼容c的程序,结果顾此失彼;在组件支持上也不太好,虽然说除了支持com,activex外还支持corba,但是没有任何ide支持,是所有c编译器的功能, 需要corba中间件支持;最大的问题是开发效率也不高。
1.5 java编程工具
目前比较出名的是borland出的jbuilder和ibm出的visual age for java,两种工具都有一定数量的是用人群。jbuilder继承了c++builder/delphi的特点,在可视化上做得非常不错,使用简便。由于java本身语言的特点使得他们在网络开发中具有高人一等的表现,而且面向对象特性高,支持的组件技术也非常多,跨平台的特性也使得它在现在和未来的开发中占据越来越重要的地位。但是在系统底层开发和多媒体开发中却表现得并不让人那么满意,这个可能跟设计java的意图有关吧。
2 各种开发工具在对数据库方面的支持比较分析
2.1数据访问对象:
2.1.1vb:dao,ado,rdo功能相仿;
2.1.2pb:transaction,dwcontrol,可绑定任何sql语句和存储过程,数据访问具有无与比拟的灵活性
2.1.3 c++ builder/dephi:具有包括datasource,table,query,midas,ado在内的二十多个组件和类完成数据访问
2.1.4 vc:同vb,但有不少类库可供使用,但极不方便,开发效率很低
2.1.5 java:java jdbc api,不同的ide具有不同的组件
2.2 数据表现对象:
2.2.1 vb:dbgrid,与数据库相关的数据表现控件只有此一种,只能表现简单表格数据,表现手段单一
2.2.2 pb:datawindow对象(功能异常强大,其资源描述语句构成类似html的另外一种语言,可在其中插入任何对象,具有包括dbgrid在内的数百种数据表现方法),只此一项功能就注定了pb在数据库的功能从诞生的那一天起就远远超过了某些开发工具今天的水平
2.2.3 c++builder/dephi:具有包括dbgrid,dbnavigator,dbedit, dblookuplistbox在内的15个数据感知组件,decisioncube, decisionquery在内的6个数据仓库组件和包括qrchart, qrexpr在内的20多个报表组建,可灵活表现数据
2.2.4 vc:同数据访问对象
2.2.5 java:不同的ide具有不同的组件,比较著名的有jbuilder,powerj, visualage for java
2.3 语句执行方式:
2.3.1 vb:将一句sql串绑定到一个命令对象中,结果返回到resultset对象中自行拆取
2.3.2 pb:是一种真正的4gl语言,可随意直接嵌套sql语句返回值被赋值到语句的变量中,支持语句级游标,存储过程和数据库函数,是一种类似sqlj的规范
2.3.3 c++ builder/dephi:使用数据库组件或类完成sql语句串的执行和提交
2.3.4 vc:同数据访问对象
2.3.5 java:sqlj,java jdbc api
3 各种开发工具其他的比较分析
3.1面向对象特性
vb:差;pb:较好;c++ builder/dephi:很好; vc:一般 ;java:非常好
3.2跨平台特性
vb:跨平台性不怎么好,但是可以与windows 家族无缝连接。
pb:跨平台性一般
c++ builder/dephi:windows家族,linux
vc:无
java:所有能够运行java虚拟机的操作系统
3.3 组件技术支持
vb:com,activex
pb:com,javabean,jaguar,userobject使用:corba+acti vex
c++ builder/dephi:com, activex corba(本身自带corba中间件visibroker,有丰富向导)
vc:com,activex,corba(没有任何ide支持,是所有c编译器的功能,需要corba中间件支持)
java:javabean,corba;activex
3.4网络或支持
vb:asp,vbscript,具有编写dhtml的简单ide,编写静态页面非常方便;用于网络通讯的支持一般
pb:dynasript, web.pb;提供了较多动态生成web页面的用户对象和服务以及系统对象,非常适合编写服务端动态web应用,有利于商业逻辑的封装;用于网络通讯的支持不足;静态页面定制支持有限
c++ builder/dephi:isapi,wininet api等各类网络或互联网api可自由而方便的调用;提供了serversocket,clientsocket等三十余个组件及类,用来处理网络通讯控制,流处理,mail,email,ftp,http等应用协议处理以及生成动态页面和商业逻辑的封装;功能强大,使用方便
vc:sapi,wininet api等各类网络或互联网api可自由而方便的调用;提供casyncsocket等数量众多的类;功能强大但使用不太方便
java:不可直接调用api但内置非常多的网络及互联网功能;可利用servlet api,java bean api,以及jsp等协同开发功能强大的web应用;功能强大,对于某些ide使用不太方便
4 综合评价:
4.1 vb:是新人开发与系统无关的综合应用程序的首选;容易使用和厂商财力很强是其仅有的两点优势。vb开发效率高,代码执行效率一般,但是入门和学习速度快,有较好的学习氛围和帮助书籍和帮助文档。但是随着微软的.net技术的推广,vb将会逐渐推出历史舞台。
pb:是开发大型mis及各类数据库跨平台应用的首选;从数据库前端工具来讲甚至远远超过了oracle的develop系列等专门的工具;从通用语言角度来讲功能也与vb等不相上下;多媒体和网络功能与其他工具相比较弱。
4.2 pb最大的优势就是datawindow技术的成熟和方便,他成为pb与其他数据库开发工具抗衡的资本。同时pb在对java和web,以及面向对象方面的发展也可以预见pb将成继续成为数据库系统(特别是mis系统)开发工具的首选。同时pb的强大帮助文档也为初学者提供了入门基础,pb连接数据库的自由和方面也为pb的提供了方便,同时pb对api的调用以及对报表的处理强大。但是pb的高级编程书籍的缺乏和基础语言powerscript的普及程度对pb的明天有一定的限制。
4.3 c++ builder/dephi:是唯一一套能够同时适用于开发数据库应用、网络及web应用、分布式应用、可重用组件、系统软件、驱动程序、多媒体及游戏等所有软件的高效率开发环境;vcl源码基于object pascal是c++ builder 唯一的缺憾,基础语言不够通用和开发系统软件功能不足是dephi仅有的两点不足。
4.4 vc:从功能上讲除了跨平台应用外什么都可开发;从开发效率角度讲只局限于开发windows系统应用、可重用组件及驱动程序。 又因为有微软的支持,其自身的基础语言的普及程度高,以及其代码的执行效率高等特性、vc自带强大帮助文档和大量优质教材,vc在数据库开发工具中始终可以稳住阵角。
4.5 java:适用于开发除了系统软件、驱动程序、高性能实时系统、大规模图像处理以外所有的应用。在一般的管理信息系统中和一般的数据库开发中,很少有人会选择java,一是由于其开发环境的配置较难,已经和数据库连接时较为负责,对开发人员的开发经验和学习时间都要很高要求,所以对于经验不是很丰富的开发人员一般是不选择java,但是java的强大网络功能和真正的面向对象特性决定了java的未来,java将在一个较为长期的时段里可以与微软家族抗衡。
5 选择开发工具的几点建议:
5.1 如果你的程序基本上完全是数据录入、查询、汇总、打印等,性能要求高,打算使用c/s结构,那么powerbuilder的确是不错的选择。
5.2 如果数据库要求不高,只是本地的,对于用户界面、通信、多媒体等方面有要求,那么我觉得vb、vc、delphi更好。我个人不太喜欢bde,主要是分发和建立别名比较麻烦。
5.3 一旦你确定了基本使用的语言,那么采用什么方式也就定下来。如对于vc、vb,访问本地数据库一般为dao,访问服务器上数据库一般使用odbc/rdo/ado。我在访问本地数据库一般不使用ado,主要是在配置比较低的机器上速度比较慢,不过dao迟早要被ado取代。
5.4 同时结合ms sql或是my sql的其他功能,比如触发器,存储过程,视图等。
6 说明:
6.1 参考(整理)网友意见部分:
1.1,1.3,1.4,2.2.3,3.3,3.4
6.2 原创部分:
1.2,2.1,2.2,2.3,3.1,3.2,4(全部),5(全部)
6.3 其他为对一些网友和自己的看的整理归纳
6.4 由于自己能力有限,漏洞之处还请大家斧正!
6.5 希望对大家在进行数据库程序开发选择开发工具(或是学习)时有用
6.6 最后提醒一下,注意根据自己的爱好和基础选择一个或是多个适合自己并适合当前程序需求的开发工具。切勿多而不精!