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

ai5230308

ai5230308

2016-02-19 17:28

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

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

  为避免上述的麻烦,我们可以在编写网络数据库应用程序时采用结构化查询语言 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 是一个整数类型的数组,该参数表明相应字段是以何种方式输入的,如果是字符方式,需要在数据前后两端加上引号。需要注意的是:在调用本过程之前,应将数据库连接打开:

  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。

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

  其模块程序的编写与 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; {打开存储过程}

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

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

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

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
利用Delphi开发网络数据库应用

Delphi在网络数据库中的应用

Delphi
Delphi在网络数据库中的应用

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Delphi 开发数据库应用程序概述

编程语言 网络编程
Delphi 开发数据库应用程序概述

Delphi开发数据库应用程序概述(二)

Delphi
Delphi开发数据库应用程序概述(二)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Delphi开发数据库应用程序概述(一)

Delphi
Delphi开发数据库应用程序概述(一)

开发网络应用的5个技巧

编程语言 网络编程
开发网络应用的5个技巧

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

分享:CSS使用技巧20则

分享:CSS使用技巧20则

在Word2010中以粘贴链接形式链接文件

在Word2010中以粘贴链接形式链接文件
下拉加载更多内容 ↓