利用Delphi开发网络数据库应用

2016-02-19 17:28 5 1 收藏

下面,图老师小编带您去了解一下利用Delphi开发网络数据库应用,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - 编程语言 】

  Delphi 是具可视化界面的面向对象编程语言,它以其功能强大、简便易用等诸多特性,深受编程人员的欢迎。Delphi 中提供了数据库引擎 BDE(Borland Database Engine),并内含众多的数据库调用构件,为编程人员开发客户/服务器应用程序提供了方便。通常情况下,利用 Delphi 开发数据库应用程序,可以使用TTable、TDataSource、TDBEdit、TDBNavigator等构件。只要正确设置了构件的某些属性,再编写必要的程序代码对一些特定事件进行处理,就能够完成对多种数据库进行的数据处理,例如:记录的输入、修改、删除和查询等。这样做虽然只需要编写极少量的程序代码就能达到很好的效果,但如果在程序设计过程中,某些数据表的结构发生了改变,则必须修改与此数据表有关的所有构件的属性,这将使程序员陷入繁琐的重复劳动中。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  为避免上述的麻烦,我们可以在编写网络数据库应用程序时采用结构化查询语言 SQL(Structured Query Language),这样不仅可以更方便地与诸如 SQL Server、Oracle 等各种后台数据库进行动态的数据交换,而且可以使程序的修改和移植更加灵活。我们以数据输入模块为例,说明开发客户/服务器应用程序时如何采用 SQL 语句实现数据处理功能。首先,判断是否已经有事务处理程序在运行,如果有,将其回卷(rollback);如果没有,则启动一个新的事务,为数据的最终处理做准备。其次,是设置 SQL 语句,并将其写入 TQuery 构件中。最后,将事务提交或回卷,至此完成一条记录的数据输入。

  下面是以页面中的 TEdit 类型编辑框内容作为数据源,向数据库输入记录的过程代码:

  

  procedure DataInsert(const qName:TQuery;            szDBName:string;iNum:Integer;            iMark:array of Integer;eName:array of TEdit);  var  i : Integer;  szSQL : string;  begin  if DataModule1.DataBase1.InTransaction=true then  DataModule1.DataBase1.RollBack;  DataModule1.DataBase1.StartTransaction;  szSQL := 'INSERT INTO '+szDBName+' VALUES('  for i:=0 to iNum-1 do   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.Open; {返回结果集}    DataModule1.DataBase1.Commit;    end;

  以上过程包含五个参数,实现从页面中的一系列编辑框中读取数据,并向指定数据表输入的功能。其中,参数 qName 为页面中所使用的 TQuery 类构件的名称;参数 szDBName 是数据表的名称;参数eName 是 TEdit 类型的数组,列出了页面中包含数据的各编辑框名称;参数 iNum 是数据表中的字段个数,也即编辑框的个数;参数 iMark 是一个整数类型的数组,该参数表明相应字段是以何种方式输入的,如果是字符方式,需要在数据前后两端加上引号。需要注意的是:在调用本过程之前,应将数据库连接打开:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  DataModule1.DataBase1.Connected := true;

  过程调用完成后,将数据库连接断开:

  ataModule1.DataBase1.Connected := false;

  另外,开发网络数据库应用程序时,还可以使用存储过程,即:将预先编译过的 SQL 语句存储在服务器上。存储过程提前运行,且不与程序代码一同存储和编译,因此其对应主程序中的代码相对简洁,运行速度也较快。SQL 语句的集中存放,使其修改更容易。

  要创建向数据表中输入数据的存储过程,代码编写举例如下:

  

  CREATE PROC ProcTest1  @inttest smallint  ,@strtest char(4) output  AS  INSERT INTO TEST_User.TRANS_TEST  VALUES(@inttest,@strtest)  SELECT @strtest,* FROM TEST_User.TRANS_TEST

  以上代码向数据表 TEST_User.TRANS_TEST 添加数据,该数据表包括两个字段:第一个字段为 smallint 类型的数据,参数类型定为 Input(在存储过程中可缺省);第二个字段数据为长度为4 的字符类型,参数类型为 Output。

  其模块程序的编写与 DataInsert 过程相似,区别主要在于模块的中间部分,对应的主要代码如下:

  

  StoredProc1.Close;    {关闭存储过程}    StoredProc1.Params[1].ParamType := ptInput;    {设置存储过程的参数类型}     StoredProc1.Params[1].AsInteger := 1;    {设置存储过程中参数的数据}    StoredProc1.Params[2].ParamType := ptOutput;    toredProc1.Params[2].AsString := 'abcd';    StoredProc1.Open; {打开存储过程}

  其中,StoredProc1 是 TStoredProc 类型的构件名称;Params[1] 是存储过程中的第一个参数,对应存储过程 ProcTest1 可以用ParamByName('@inttest')代替;存储过程的第二个参数与其类似。

  实际上,编写对网络数据库进行其他数据处理(如:修改、删除和查询等)的模块,与数据的输入模块大体相似,这里就不再赘述了。

来源:https://www.tulaoshi.com/n/20160219/1615287.html

延伸阅读
标签: Delphi
  一、概述 Delphi作为Windows下的一种快速开发工具,不仅能开发一般的Windows应用程序,而且还具有强大的数据库应用程序开发功能。Delphi本身提供了对BDE,ODBC,ADO和InterBase几种数据库驱动的支持,能够满足不同应用对数据库程序开发的需要。 然而,在发布用Delphi开发的数据库程序时,除了要安装应用程序之外,还需...
可能有不少朋友使用SQL SERVER做开发也已经有段日子,但还没有或者很少在项目中使用存储过程,或许有些朋友认为根本没有必要使用存储过程等等。其实当你一个项目做完到了维护阶段时,就会发现存储过程给我们带来了好处了,修改方便,不能去改我们的应用程序,只需要改存储过程的内容,而且还可以使我们的程序速度得到提高。   引用:...
正在看的ORACLE教程是:Oracle数据库及应用程序优化开发者网络Oracle。 介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。  摘 要:本文对ORACLE数据库及ORACLE应用程序的优化,进行了全面的分析与研究,并提出了自己的一些建议。 ...
  学习Delphi有一个星期了,Delphi是Pascal的派生,可是说学过pascal到学起来很容易,当然我学过VB(visual basic),当然相对来说比较熟悉这门语言,可是时间长了不学也忘记了好多,但是学习Delphi上手快多了,尤其是我现在学的这本书是关于Delphi数据库设计,学习的过程中好多当年学VB时候那些捆绑数据库控件比如:ADO等都浮现在脑海中...
在当前数据库领域,已有越来越多的人开始采用Access。它是一个功能强大的数据库管理系统和MIS系统开发工具,具有界面友好、易学易用、开发简单、接口灵活等特点。现将本人在使用Access时体会到的一些经验在此与大家交流。 数据库设计的技巧 1. 统一规划 所谓数据库设计是指从对现行非计算机管理的数据库系统的分析到最...

经验教程

653

收藏

99
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部