最有“钱”途的编程方向——数据库编程 柯建勋 2000年 第38期 #1 一、前言   很多人认为,数据库编程是一个颇具诱惑力的工作,这诱惑力来自于数据库应用的巨大市场需求。计算机应用有科学计算、数据处理与过程控制三大主要领域,而数据处理是其中所占比重最大的一个领域,包括现在最流行的客户机/服务器模式(C/S)、Internet模式(B/S)应用从广义上讲都可以归入此应用领域。正是因为市场需求巨大,数据库编程前景被人看好,有意步入编程殿堂的你,对此是否有些心动呢? #1 二、数据库应用及编程原理   1.数据库应用的发展   数据库系统是在文件系统的基础之上发展而来的,经历了层次数据库——网状数据库——关系数据库三个阶段。由于关系型数据库采用人们比较容易理解和接受的二维表格来组织数据,发展迅速,已成为数据库产品的主流。我们这里介绍的数据库知识都是指的关系数据库。   2.基本概念   数据库(DataBase,简称DB) 是按一定组织方式存储在计算机存储器中、相互关联的数据集合,数据库的建立独立于程序。所谓关系数据库 就是将数据表示为表的集合,通过建立简单表之间的关系来定义结构的一种数据库。   数据库管理系统(DBMS)是一个管理数据库的软件系统,为用户提供了描述数据库、操纵数据库和维护数据库的方法和命令,并且能自动控制数据库的安全以及数据完整。现在的Oracle、Sybase、Microsoft SQL Server等数据库都是数据库管理系统。   数据库系统(DBS)是一个具有管理数据库功能的计算机系统,它包括应用软件、数据库(DB)、数据库管理系统(DBMS)和数据库管理人员(DBA)几部分。我们今天讲的数据库编程一般就是指开发数据库系统,即通过编制数据库应用程序来操纵数据库,实现数据有效的管理。   我们以一幅结构^38021008a^来直观地了解数据库编程的架构如下:   当然,数据库管理人员一般是针对大型的数据库应用而言的,小型数据库应用没有专门的数据库管理人员。可能有些读者会误以为数据库编程就是编写数据库应用程序,其实还应包括数据库的设计,如编制一个工资管理系统,如何将人员信息、工资信息合理组织,设计数据结构,也是数据库编程应该考虑的工作。而DBMS是数据库自己的功能,不用我们考虑,我们只要与其接口打交道就行了(如当代开发工具一般都提供ODBC用于连接数据库)。不管表在数据库文件中的物理存储方式如何,它都可以看作一组行和列,与电子表格Excel的行和列类似。在关系数据库中,行被称为记录,而列则被称为字段。下面是一个员工工资表的例子。   我们可以看到,此表中每一行描述了公司一个特定员工的信息,称为一个记录;而每个记录则包含了相同类型和数量的字段。由此^38021008b^表我们引出如下定义:   表 是一种按行与列排列的相关信息的逻辑组,如上面的公司员工表。   字段 数据库表中的每一列称作一个字段。表结构是由其包含的各种字段定义的,每个字段描述了它的一个属性值。字段可包含各种字符、数字甚至图形(如保存员工的照片)。   记录 存放在表的行,被称为记录。同一个数据表中任意两个记录都不能完全相同。   键 键就是表中的某个(或多个)字段,键可以是唯一的,也可以是非唯一的。唯一键可以指定为主键,用来唯一标识表的每行。例如,在员工表中,员工号是表的主键,因为它唯一地标识了一个员工(这里我们不能用姓名做主键,因为姓名不能唯一标识一个员工,可能会有重名的情况)。   关系 关系就是表与有之间的联系。数据库可以由多个表组成,表与表之间可以以不同的方式相互关联。例如,员工数据库还可以有一个包含某个员工其他信息的表,这些表通过员工号与员工表相关连。 #1 三、SQL语言   说到数据库编程,就不能不提SQL语言。SQL语言的英文全称是Structured Query Language,意为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通,用来执行各种各样的操作,例如更新数据库中的数据、从数据库中提取数据等。SQL已被ANSI(美国国家标准协会)和国际标准化组织(ISO)定为关系型数据库管理系统的标准语言。目前,绝大多数流行的关系型数据库管理系统,如Oracle、Sybase、Microsoft SQL Server、DB2等都遵循SQL语言标准。   工欲善其事,必先利其器,接下来的工作就是选择一个比较好的数据库开发工具了。 #1 四、几种数据库开发工具的比较   目前包括一些专有数据库厂商都提供了数据库编程工具,如Oracle的Developer 2000、Sybase的Power++等,但比较流行的还是Delphi、VB、PowerBuilder等语言,这几个开发工具各有所长、各具优势。如VB采用的是BASIC语言,简单易学,与微软产品有很强的结合力;Delphi有出色的组件技术、编译速度快,采用面向对象的Pascal语言有极高的编译效率与直观易读的语法;PowerBuilder拥有作为SYBASE公司专利的强大的数据窗口技术、提供与大型数据库的专用接口。VFP在中国也有大量的用户基础,但微软宣布从VFP6后不再推出新的版本,不少以前的FOX程序员已转向其他开发工具。对于初学者,可以根据自己的需要加以选择。我这里向大家介绍数据库开发利器PowerBuilder,它是数据库编程“短平快”的好手。 #1 五、PowerBuilder数据库编程简介   PowerBuilder(以下简称PB)是Sybase公司的独资子公司PowerSoft推出的应用于客户机/服务器体系结构下应用程序开发的一种面向对象的图形化交互式开发工具。PB以其简洁高效的集成开发环境、 强大的数据窗口技术、几乎无所不能的数据库访问能力和友好的用户界面,越来越受到编程人员的青睐。PB6.5是目前应用最多的版本,PB7推出了很久,但好像一直不够稳定,PB8也在开发之中,是一款值得我们期待的产品,我们这里以PB6.5为例作简介。   PB数据库应用程序一般包括用户程序、数据库引擎和数据库三个部分。数据库引擎是PB提供的与各类数据库的接口,有了数据库引擎,我们可以不去了解访问数据库的技术细节,而把精力放在数据库的设计和用户程序的编写上。   PB开发环境由一系列集成的画笔(Painter)组成。所谓画笔实际上就是完成一定功能的工具,比如窗口画笔用于定义窗口对象、数据窗口画笔定义数据窗口对象、库画笔完成应用库的增删改等,应用开发人员通过简单的鼠标操作就能设计、建立、测试客户/服务器应用程序。   PB把一个解决实际问题的应用程序叫做Application,即应用对象。应用对象是进入到应用库中其它对象的入口点,通过在Application级编写代码,可以展开一个程序框架。PB应用对象保存在PBL文件中。   如果我们要开发一个管理系统,除了编写代码外,还需要选好数据库。PB自带的Sybase SQL Anywhere 5.0是一个小型关系数据库,体积虽小但功能强大,支持多平台,几乎拥有其它大型关系型数据库的所有功能,建议初学时就只使用它。   如在一个窗体中放入了一个数据窗口控件并让它关联上一个数据窗口对象,如果我们想在窗口打开时让数据窗口控件显示数据,可以在该数据窗口控件的constructor(构造)事件中加入如下代码:   this.SetTransObject(sqlca)   this.Retrieve()   用PB编写一个简单的数据库应用程序实现输入、修改、删除纪录非常简单,甚至可以不用一条SQL命令。这要归功于数据窗口的强大功能,但SQL语言对于PB数据库编程还是必需的,很多情况下我们仍要借助它。所以要想作为专业的数据库开发人员,仍然需要掌握SQL。 #1 六、资源放送   1.好书推荐:   (1)书名:《PowerBuilder7编程基础》   出版:清华大学出版社   作者:李国民 张磊   简介:一本入门的好书,PB数据库编程基本概念、SQL、PowerScript、窗口、数据窗口等介绍很详细。   (2)书名:《PowerBuilder6.0应用与开发》   出版:清华大学出版社   作者:吴洁明   简介:一本相当不错的PB工具书(可惜我没找到PB7版的,5、6版都有),系统地介绍了PB6的应用与开发技巧,对数据库的操作、窗口对象中各控件的使用方法、数据窗口的应用、用户对象和用户事件以及OLE的技术和应用。书中对于PB的精华——数据窗口作了比较详细的介绍,报表、统计图的讲述也很详尽。有一章专门介绍了PB开发Internet应用和分布式应用的原理和方法。   2.网上资源   Sybase 中国:http://www.sybase.com.cn Sybase中国官方站点,下载、PB编程讨论。   PB编程俱乐部:http://kjx.126.com,PB、数据库编程技巧、讨论、例程下载。   PowerBuilder编程高手:http://liuzhengguo.163.net 天极网学习中心PB子站。   PowerBuilder程序员资源站 http://www.pbdr.com 国外一家非常好的PB资源站点。   Powerbuilder程序员之家 http://member.netease.com/~chenjm 国内比较早的一个优秀PB个人主页,内容丰富。