Delphi编写数据库程序要点
2006-02-04 14:00:48 来源:WEB开发网 Delphi是著名的Borland公司开发的可视化软件开发工具。有这样一句话最为经典、贴切的描述了Delphi——“真正的程序员用C,聪明的程序员用Delphi”。很多人把Delphi称为是第四代编程语言,它具有简单、高效、功能强大等特点。和Visual C++比较,Delphi更简单、更易于学习掌握,而在功能上却毫不逊色;和Visual Basic相比,Delphi则功能更强大、更实用。可以说,Delphi兼备了VC和VB的特点,所以一直是广大程序员喜爱的编程工具。
下面,我们将分期向大家简单介绍Delphi的特点、常用组件,以及利用Delphi开发数据库程序的方法和步骤。
发展至今,从Delphi 1、Delphi 2到现在的Delphi 7、Delphi 8(Borland Delphi .net),Delphi不断扩展和改进着自身的功能、特点和优势。Delphi提供了各种开发工具,包括集成环境、图像编辑(Image Editor),以及各种开发数据库的应用程序,如Database Desktop等。而且,还允许用户挂接其他的应用程序开发工具,如Borland公司的资源编辑器(Resourse Workshop)。
在Delphi众多的优势当中,它在数据库方面的特长显得尤为突出:适用于多种数据库结构,从客户机/服务机模式到多层数据结构模式;高效率的数据库管理系统和新一代更先进的数据库引擎;最新的数据分析手段和提供大量的企业组件。
首先,我们来简单了解一下Delphi是如何存取数据库的。
Delphi对数据库的操作主要是利用BDE(数据库引擎,Borland Database Engine的缩写)来进行。当然,通过其他方式直接访问数据库,在Delphi中也都是可以实现的。不过,对于本地数据库来说,通过BDE存取数据效率很高。对本地数据库如果能够熟练操作,编写网络数据库也就容易上手了。尤其对初学者来说,写网络数据库的机会还是不如单机本地数据库多。所以,我们把重点放在本地数据库上。
BDE是负责用户和数据库交流的中间媒介。事实上,应用程序是通过数据访问组件和BDE连接,再由BDE去访问数据库,完成对数据库的操作,而并非直接操作BDE。这样用户只需关心Delphi中的数据组件即可,不用直接和BDE打交道。
数据库组件主要分为两类:“数据访问组件”和“数据控制组件”,它们和数据库的关系可用下面的关系图来示意:
通过BDE,几乎可以操作目前所有类型的数据库。接下来,简单介绍一下Delphi中常用的数据库组件。
1. 数据访问组件(Data access Component)
数据访问组件在Delphi组件面板的Data Access组件页上可以找到。这里我们应当注意:Table、Query和StoredPRoc三个控件,它们称为“数据集组件”,用于和数据库连接。学习者可以将这些控件视为“虚拟”的数据库,对它们的操作就可以认为是对数据库的操作。
(1)DataSource控件是数据集组件和数据控制组件的连接媒介。数据控制组件是用户操作数据库中数据的界面,只有通过DataSource控件才能和数据集组件连接,从而对数据进行显示、修改、维护等操作。
(2)Table控件是通过数据库引擎——BDE来存取数据库中的数据的。通过BDE将用户对数据库的操作(如添加、删除、修改等)传递给数据库。
(3)Query控件是利用SQL(Structured Query Language,结构化查询语言)通过BDE来操作数据库的,和Table控件完成的功能相似,它只是采用了SQL来实现。
(4)Storedproc控件是通过BDE对服务器数据库进行操作的,常用于客户/服务器(C/S)结构的数据库应用程序。
(5)DataBase控件一般用于建立远程的数据库服务器——客户/服务器结构的数据库应用程序和数据库之间的连接。
(6)session控件是用于控制数据库应用程序和数据库连接的,主要用于复杂功能的实现,例如:多线程数据库程序设计。
2. 数据控制组件(Data Control Component)
数据控制组件也可以称为数据显示组件或数据浏览组件。它们的主要功能是与数据访问组件相配合,提供给用户一个对数据进行浏览、编辑等操作的界面。数据控制组件在组件板上的DataControl页上。它们主要有:DBGrid控件、DBNavigator控件、DBText控件、 DBEdit控件、DBMemo控件、DBImage控件、DBListbox控件、DBComboBox控件、DBCheckBox控件、 DBRadioGroup控件、DBLookupListBox控件、DBLookupComboBox控件、DBRichEdit控件、 DBCtrlGrid控件、DBChart控件等。
此外,还有一些组件与数据库有关。例如,Decision Cube是一组主要用于数据统计工作的控件,以表格或图形等直观的方式表达统计结果。QReport是用来输出报表的控件,但是,根据经验来看,此控件不太适合中国人报表的习惯。此组件是Borland公司购买而来,性能不是太好,所以现在使用的不是很多。目前,有一些第三方控件提供的报表控件很好用,也有一些国人自己制作的报表控件,很适合中国人的习惯。
还有一个组件页是ADO(ActiveX Data Objects),主要是使用微软的OLE DB功能对数据库服务器中的数据进行访问和操作。其主要优点是易于使用、高速度、低内存支付和存储空间占用较少。ADO支持用于建立基于客户端/服务器和基于Web的应用程序。ADO同时具有远程数据服务(RDS)功能,通过RDS可以在一次往返过程中实现将数据从服务器移动到客户端应用程序或Web页、在客户端对数据进行处理然后将更新结果返回服务器的操作。ADO现在逐渐流行起来,ADO本身也很复杂,微软有专门的帮助文件来说明如何使用ADO,学习者有兴趣可以找相关资料进一步学习。
编写程序
在上面的准备工作做完之后,应该说,万里长征已走完了三分之一。因为有了明确的程序流程、有了基本充足的编程资源、可能碰到的难点都找到了解决方案,可谓“万事俱备,只欠东风”!由于事先准备的比较充分,即使以后程序的编写过程中可能还会碰到一些困难,但毕竟不会成为“拦路虎”的状况,我们需要做的就是拿出一大块时间,静下心来认真按照方案和流程来编写程序了。这里说明一点,在写程序之前应该首先建立空白数据库,当然也可以在设计方案时建立数据库,也可以在完成前面的五个步骤之后在正式写程序之前建立空白数据库。
编写数据库程序的几点建议
由于数据库程序和用户的交互功能较多,用户需要输入的数据量大,所以必须充分考虑到程序的错误处理,对用户可能出现的输入错误要充分考虑并在程序中尽量及时给出提示。
在保存时对输入数据进行校验,防止一些非法数据保存到数据库中,导致以后的统计、查询出现错误。
程序要写的稳定性好、容错能力强是很不容易的,从经验来看,很大一部分精力都用在防止出错、使得程序能稳定运行方面。
在完成一个功能模块的代码编写后要立即进行调试,调试通过后再编写另外一个功能的代码,这样可以防止代码都编写完毕再调试是因为可能带来的相互影响而弄不清除到底哪部分代码出现问题。
代码中关键的地方要加些注释,以防以后自己都看不懂当初是怎么写的了。将程序代码做好备份,做好“灾难恢复”的准备。(全文完)