您的当前位置:首页在Delphi下的网络数据库编程
在Delphi下的网络数据库编程
来源:锐游网
第34卷第6期 包钢科技 VDJ.34,No.6 2008年l2月 Science&Technology of Baotou Steel(Group)Corporaiton December,2OO8 在Delphi下的网络数据库编程 杨峥嵘 (包钢(集团)公司包钢高级技术学校,内蒙古包头014010) 摘要:网络技术的快速发展和应用,特别是c/s系统,都离不开数据库的支持。用什么开发和怎样开发数据库应 用程序是每个程序设计者必须考虑的问题。Delphi作为一种数据库开发工具具有快速高效和功能强大等诸多优 点,特别是是在网络数据库编程方面这些特点更为突出。 关键词:Delphi;数据库;编程 中图分类号:TP393.09 文献标识码:B 文章编号:1009—5438(2008)06—0072—03 Network Database Programming on Delphi YANG Zheng——tong (Senior Technical School ofBaotou Steel(Group)Corp.,Baotou 014010,Nei Monggol,China) Abstract:The rapid development and application of Internet technology,especially c/s system,must be supported by the database.How to develop the applieation program is a question that each procedure designer must consider.Delphi as a database development tool has many advantages such as fast,efifcient and powerful,and these features aIe prominent especially in the net— work database programming. Key words:Delphi;database;programming Delphi是具可视化界面的面向对象编程语言, 它以其功能强大、简便易用等诸多特性,深受编程人 1 存在的问题及解决 员的欢迎。Delphi中提供了数据库引擎BDE(Bor— 使用各种组件虽然只需要编写极少量的程序代 land Database Engine),并内含众多的数据库调用组 码就能达到很好的效果,但如果在程序设计过程中, 件,为编程人员开发客户/服务器应用程序提供了方 某些数据表的结构发生了改变,则必须修改与此数 便。通常情况下,利用Delphi开发数据库应用程 据表有关的所有组件的属性,这将使程序员陷入繁 序,可以使用Ttable(数据集组件)、TdataSource(数据 琐的重复劳动中。 源组件)、TDBEdit(数据控制组件)、TDBNavigator(导 为避免这种麻烦,可以在编写网络数据库应用 航器)等组件…。只要正确设置了组件的某些属性, 程序时采用结构化查询语言SQL(Structured Query 再编写必要的程序代码对一些特定事件进行处理, Language),这样不仅可以更方便地与诸如SQL Sen,. 就能够完成对多种数据库进行的数据处理,例如:记 er、Oracle等各种后台数据库进行动态的数据交换, 录的输入、修改、删除和查询等。 而且可以使程序的修改和移植更加灵活。 收稿日期:2008—08—01 作者简介:杨峥蝾(1960一),男,内蒙古包头市人,计算机讲师,现从事计算机教学工作。 第6期 在Delphi下的网络数据库编程 73 2 以例为证加以说明 现在以数据输入模块为例,说明开发客户/服务 qName.Open;{返回结果集} DataModule1.DataBase1.Commit; end; 器应用程序时如何采用SQL语句实现数据处理功 能。首先,判断是否已经有事务处理程序在运行,如 果有,将其回卷(rollback);如果没有,则启动一个新 的事务,为数据的最终处理做准备。其次,是设置 SQL语句,并将其写人TQue ̄查询组件中。最后, 将事务提交或回卷,至此完成一条记录的数据输入。 2.1数据库记录的输入 下面是以页面中的TEdit类型编辑框内容作为 数据源,数据库输入记录的过程代码(delph程序代 码): procedure DataInsert(const qName:TQuery; szDBName:string;iNum:Integer; iMark:array of nIteger;eName:array of IEdit); var i:Integer; szSQL:string; begin if DataModule1.DataBase1.InTransaetion=true then DataModule1.DataBase1.RollBack; DataModule1.DataBase1.StartTransaction; szSQL:=’INSERT INTO’+szDBName+’VAL- UES(’ for i:=0 to iNum一1 d0 begin if iMark[i]=0 then szSQL:=szSQL+eName[i].Text{非字符方式} else szSQL:=szSQL+’”’+eName[i].Text+’”’; {字符方式} if i=iNum一1 then szSQL:=szSQL+’)’ else szSQL:=szSQL+’,’; end; qName.Close;{关闭查询} qName.SQL.Clear;{清SQL特性内容} qName.SQL.ADD(szSQL);{添加SQL内容} szSQL:=’SELECT*FROM’+szDBName; qName.SQL.ADD(szSQL); 以上过程包含五个参数,实现从页面中的一系 列编辑框中读取数据,并向指定数据表输入的功能。 其中,参数qName为页面中所使用的TQuery类组件 的名称;参数szDBNarae是数据表的名称;参数 eName是TEdit类型的数组,列出了页面中包含数据 的各编辑框名称;参数iNum是数据表中的字段个 数,也即编辑框的个数;参数iMark是一个整数类型 的数组,该参数表明相应字段是以何种方式输入的, 如果是字符方式,需要在数据前后两端加上引号。 需要注意的是:在调用本过程之前,应将数据库连接 打开: DataModule1.DataBase1.Connected: true: 过程调用完成后,将数据库连接断开: DataModule1.DataBase1.Connected: false: 2.2使用存储过程方法编程 另外,开发网络数据库应用程序时,还可以使用 存储过程,即:将预先编译过的SQL语句存储在服 务器上。存储过程提前运行,且不与delphi程序代 码一同存储和编译,因此其对应主程序中的代码相 对简洁,运行速度也较快。另一个优点是:SQL语句 的集中存放,使其修改更容易。 要创建向数据表中输人数据的存储过程【 ,代 码编写举例如下(SQL程序代码): CRE L1E PROC ProcTestl @inttest smallint ,@strtest char(4)output AS NISERT INTO TEST-Uset.TRANS. IEST VALUES(@inttest,@strtest) SELECT@strtest.*FROM TEST—User.TRANS- TEST 以上代码向数据表TEST-User.TRANS.TEST添 加数据,该数据表包括两个字段:第一个字段为 smallint类型的数据,参数类型定为Input(在存储过 程中可缺省);第二个字段数据为长度为4的字符类 型,参数类型为Output。 其模块程序的编写与Datalnsert过程相似,区别 主要在于模块的中间部分,对应的主要代码如下: StoredProc1.Close; {关闭存储过程} 74 包钢科技 第34卷 StoredProe1.Params【1].ParamType: ptInput; {设置存储过程的参数类型} StoredProe1.Params[1].AsInteger::1; {设置存储过程中参数的数据} StoredProe1.Params[2J.ParamType: ptOutput; 3 结束语 本文通过用文字和实例程序的交替论述以及对 实侧程序的分析,非常清晰地指出了在delphi下,网 络数据库的编程思路和方法。对于初学编程或有一 StoredProe1.Params[2].AsString:=’abed’; 定经验的程序员来说,也是一个很好的范例,值得借 StoredProe1.Open;{打开存储过程} 鉴。 其中,StoredProel是TStoredProe类型的组件名 称;Params[1]是存储过程中的第一个参数,对应存 储过程ProcTestl可以用ParamByName(’@inttest’) 参 考文 献 代替;存储过程的第二个参数与其类似。 [1] 张娟.Delphi 8.0程序设计教程[M].西安:西 实际上,编写对网络数据库进行其他数据处理 北工业大学出版社,2005. (如:修改、删除和查询等)的模块,与数据的输入模 [2] 闪四清.SQL Server实用简明教程[M].北京: 块大体相似,这里就不再赘述了。 清华大学出版社,2008. (上接第62页) 入时必会产生强烈的冲击而损坏设备。有的加热器 在现场设备安装中,由于设备主体设计制造,电 为了防止这种情况的发生,同时也为了方便操作,设 接点水位计的一次测量筒与水位调节变送器的平衡 置了注水管和阀门。而当炉水或低温蒸汽(低于汽 容器安装位置有所不同。 缸金属温度或接近饱和温度的蒸汽)进入正常运行 实际测量中,电接点水位计测量筒的安装位置 的汽轮机汽缸内,就将发生水冲击事故。水冲击事 要比水位变送器的平衡容器安装位置高出600 InlTl。 故的发生,会损坏汽轮机的叶片和推力轴承。使主 为了能够方便现场工人操作,对变送器的零点进行 轴和汽缸在急剧冷却的过程中发生热变形,引起动 了迁移,使其能够与电接点水位计的测量数据相符, 静部分磨损而毁坏轮机设备。 同时修复了部分损坏的测量线路和设备,更换了电 接点测量筒上的电极以及部分损坏严重的仪表设 3 结束语 备,并逐点进行测试,对所有关联仪表进行了静态调 改造完成后,系统已经投入生产,运行情况良 试和热投运。 好,经过生产实践证明,具有很好的应用效果,满足 2.2投运高压加热器注意事项 了生产工艺的要求;但是,由于受各种条件因素限 投运高压加热器应在出口给水道运行正常,机 制,还存在着许多不足之处,有待于今后进一步完 组达到相应负荷时投入,低于相应负荷时停止。加 善。 热器投入运行时要严格按照作业程序进行操作,必 须先进行通水,然后再投入蒸汽。否则会使加热器 铜管受热膨胀而导致胀口松弛,严重时还会直接损 参 考 文 献 坏设备。对加热器通水时要排净水侧的空气,这一 [1] 宫毓家.冶金仪表与自动调节[M].北京:冶金 点对高压加热器尤为重要,避免发生通水时没有排 工业出版社,1989. 放空气造成冲击,加热器水位过高事故。因为给水 [2] 赵玉珠.测量仪表与自动化[M].山东:石油大 压力比较高,如果没有排出、排净空气,给水大量进 学出版社,1997.
因篇幅问题不能全部显示,请点此查看更多更全内容