用Delphi 开发数据库程序经验三则

原创 2001年07月20日 10:52:00
1.建立临时表
  数据输入是开发数据库程序的必然环节。在Client/Server结构中,客户端可能要输入一批数据后,再向服务器的后台数据库提交,这就需要在本地(客户端)建立临时数据表来存储用户输入的数据,待提交后,清除本地表数据。这种方法的好处是:提高输入效率,减小网络负担。

  由于用户一次输入的数据量一般情况下较小(不会超过几百条记录),所以临时表可以建立在内存中,这样处理速度较快。
  方法1:使用查询控件(TQuery)
  第1步:在窗体上放上查询控件(TQuery),设置好所连接的数据表。
  第2步:使TQuery. CachedUpdates=True;
      TQuery. RequestLive=True
  第3步:在原有的SQL语句后加入一条Where子语句,要求加入这条Where子语句后SQL查询结果为空。
  例如:
    SELECT Biolife.″Species No″, Category, Common_Name, Biolife.″Species Name″, Biolife.″Length (cm)″, Length_In, Notes, Graphic
     FROM ″biolife.db″ Biolife
     where Biolife.Category=′A′ and Biolife.Category=′B′
  这样临时表就建立完成了。

  方法2:使用代码创建临时表
  代码如下:
  function CreateTableInMemory(const AFieldDefs:TFieldDefs):TDataSet;
  var
      TempTable:TClientDataSet;
  begin
   TempTable:=nil;
   Result:=nil;
   if AFieldDefs<>nil then
   begin
    try
     TempTable:=TClientDataSet.Create(Application);
     TempTable.FieldDefs.Assign(AFieldDefs);
     TempTable.CreateDataSet;
     Result:=(TempTable as TDataSet);
    Except
     if TempTable<>nil then
           TempTable.Free;

     Result:=nil;
     raise;
    end
  end
 end;

  在程序中按如下方法使用:
  procedure TForm1.Button1Click(Sender: TObject);
  var
      ADataSet:TDataSet;
  begin
   ADataSet:=TDataSet.Create(Self);
   with ADataSet.FieldDefs do
   begin
     Add(′Name′,ftString,30,False);
     Add(′Value′,ftInteger,0,False);
   end;

   with DataSource1 do
   begin
     DataSet:=CreateTableInMemory(ADataSet.FieldDefs);
     DataSet.Open;
   end;

   ADataSet.Free;
  end;

  临时表创建完成。

  方法1使用简单,但由于利用查询控件,清空数据时需要查询服务器后台数据库,所以速度稍慢,而且不适用于临时表中各个字段由数个数据表的字段拼凑而成的情况。方法2适用范围广、速度快,但需要编写代码。(代码中TFieldDefs的使用方法十分简单,见Delphi的联机帮助)。

2.配置数据引擎(BDE、SQL Link)
  有关数据库程序分发时,需要携带数据引擎(BDE、SQL Link),并且在客户端安装完程序后还需要配置数据引擎,如用户名(username)、密码(Password)等等。如果手工配置的话,工作量比较大(根据客户机数量而定)。而InstallShield For Delphi又好像没有这方面的选项,其实InstallShield For Delphi可以做到,在生成安装程序的目录里有一个*.iwz的文本文件,只要在[IDAPI Alias]片段中手工加入即可。 例如:
   [IDAPI Alias]
   usesname=SYSDBA
   password=masterkey
  安装程序后数据引擎自动配置完毕。

3.在InterBase数据库中使用函数
  程序员可能在用InterBase作为后台数据库时,会为其提供的函数过少而感到不方便(只有四个),无法方便地编写出复杂的存储过程。InterBase本身无法编写函数,但它可以使用外部函数(调用DLL中的函数)。下例中说明如何在InterBase 中声明SUBSTR函数。
  DECLARE EXTERNAL FUNCTION SUBSTR
   CSTRING(80), SMALLINT, SMALLINT
   RETURNS CSTRING(80)
   ENTRY_POINT ″IB_UDF_substr″ MODULE_NAME ″ib_udf″

  其中:MODULE_NAME为DLL的名称,ENTRY_POINT为函数名。
  声明后便可以使用,例如:
   select SUBSTR(country)
    from country

  本例使用的是Delphi安装时自带的IBLocal数据库。用户也可以自己编写函数来扩充InterBase。




用Delphi 开发数据库程序经验三则

  • zgqtxwd
  • zgqtxwd
  • 2008年04月30日 19:19
  • 86

Delphi开发单机瘦数据库程序要点(后缀cds)

一、概述    Delphi作为Windows下的一种快速开发工具,不仅能开发一般的Windows应用程序,而且还具有强大的数据库应用程序开发功能。Delphi本身提供了对BDE,ODBC,ADO和...
  • delphi308
  • delphi308
  • 2014年03月17日 20:16
  • 1725

用Delphi开发Web服务数据库程序

第一步:编写服务器的应用程序 首先在Delphi的IDE中选择”File|New|Other…”,然后在WebServices页面中选择Soap Server Application图标。 然后在...
  • manstar
  • manstar
  • 2012年01月27日 20:33
  • 949

用Delphi编写CGI程序(一)

用Delphi编写CGI程序(一)   1.0 、 CGI 程 序 的 功 能:     首 先, 什 么 是 公 共 网 关 接 口( CGI ) 呢? CGI 是 一 个 用 于 定 义 WEB ...
  • zou5655
  • zou5655
  • 2001年07月30日 19:29
  • 753

delphi怎样编译LINUX程序

delphi编译LINUX程序 DELPHI XE 10.2(TOKYO)开始可以开发LINUX控制台程序。 1)上传PASERVER到LINUX,并且运行PASERVER。 2)开始编译,PR...
  • yang00322
  • yang00322
  • 2017年09月07日 14:09
  • 459

DELPHI入门3--最简单的数据库连接,运用

1) 用DELPHI里的工具建立最简单的数据库,和资料表;以PARADOX讲解;Database Desktop(DBD)  建立、索引、查询数据库表以及访问、编辑来自各数据中的数据  建立目录,在下...
  • foreveryday007
  • foreveryday007
  • 2004年06月25日 11:26
  • 3868

用Delphi开发Web Services数据库程序

第一步:编写服务器的应用程序     首先在Delphi的IDE中选择”File|New|Other…”,然后在WebServices页面中选择Soap Server Application图标,如下...
  • adriftken
  • adriftken
  • 2002年03月04日 08:59
  • 656

delphi CS转BS

通过satrda的免费浏览器插件,直接把delphi的CS程序转换成BS可以在浏览器中运行。...
  • pcwe2002
  • pcwe2002
  • 2017年07月06日 15:47
  • 1025

一些大牛技术历程及经验积累

》链接:https://www.zhihu.com/question/28481914/answer/40983737 @张明云 :好兄弟,三观正,人Nice,做事非常踏实,技术上的涉猎很广,深度也...
  • ShareUs
  • ShareUs
  • 2016年03月06日 21:47
  • 714

这些日子,2年ABAP经验,开发功能重点序列

我在XX汽车,早出晚归,积累了汽车行业2年ABAP开发经验,重点序列: SD(Sales and Distribution)模块 DMS(Dealer Management System汽车经销...
  • ot512csdn
  • ot512csdn
  • 2016年04月17日 23:31
  • 366
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Delphi 开发数据库程序经验三则
举报原因:
原因补充:

(最多只允许输入30个字)