利用Delphi开发网络数据库应用的论文口☆口口☆

  利用Delphi开发网络数据库应用的论文

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

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

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

  procedure datainsert(const qname:tque口ry;szdbname:str口ing;inum:in口口teger; im口ark:arra口y of integer;en口ame:array of tedit);var i : integer; sz口sql口 : string;begin if datamodule1.datab口ase1.intransaction=true thend口atamodule1.data口b口ase1.rollb口ack; datamodule1.dat口abase1.sta口rt口transaction; s口zsql := insert into +szdb口name+ values( for i:=0 to inum-1 do begin if imark[i]=0 th口enszs口ql := szsql+ename[i].text{非字符方式} 口elseszsql := szsql+"+ename[i].tex口t+";{字符方式} if i=inum-1 then szsql := szsql+) elseszsql := s口zsq口l+,; end; q口name.close;{关闭查询} 口qname.sql.cle口ar;{清s口ql特性内容} qname.sql.add(szsql口);{添加sql内容} szsql := select * from +szdbname; qna口me.sql.add口(szsql); q口n口ame.open;{返回结口果集}口 datamodule1.database1.commit;end;

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

  datamodule1.database1.connected := t口ru口e;

  过程调用完成后□□☆,将数据库连口接断开:datamod口ule1.database1.con口nected := fals口e;另外□□☆□,开发网络数据库应用程序口时☆☆☆☆,还可以使用存储过程☆☆□,即:将预先编译过的 sql 语句存储在服务器上☆☆□□□。存储过程口提前口运口行□☆☆,且不与程序代码一同存储和编译□□☆□☆,因此其对应口主口程序中的代码相对简洁☆□☆□,运行速度也口较快☆□☆□。sql 语句的集口中存放□☆□□,使其修改更容口易☆□☆。

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

  creat口e proc proctest1 @inttest smallint ,@strtest char(4) outputas insert into test_user.trans_test values(@inttest,@strtest) select @strtest,* from te口口口st_user.trans_tes口口t以上代码向数据表 test_user.tr口ans_test 添加数据□□☆,该数据表包括两个字段:第一个字段为 small口int 类型的数据□☆□☆☆,参数类型定为 input(在存储过程中可缺省);第二个字段数据为长度为4 的字符类型☆□☆,参数类型为 output□□☆☆。

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

  storedproc1.close;{关闭存储过程}口storedproc1.params[1].paramtype口 := p口tinput;{设置存储过程的参数类型}storedproc1.par口ams[1].asin口teger口 := 1;{设置存储过程中口参数的数据}stored口proc1.params[2].paramtype := ptoutput;storedproc1.params[2].asstring := a口bc口d;storedproc1.open;{打开口存储过程}口其中☆□☆□□,storedproc1 是 tstoredproc 类型的构件名称;params[1] 是存储过程中的第一个参数□□□☆□,对应存储过程口 proctest1 可以用param口byname(@inttest)代替;存储口过程的第二个参数与其类似☆☆□。

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

本文由一凡论文网发布于计算机论文,转载请注明出处:利用Delphi开发网络数据库应用的论文口☆口口☆

您可能还会对下面的文章感兴趣: