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

2016-01-29 14:16 15 1 收藏

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

【 tulaoshi.com - Delphi 】

 

  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。

来源:https://www.tulaoshi.com/n/20160129/1492908.html

延伸阅读
空字段的处理 在往SQLServer数据库中添加记录时,每个字段必须给予明确赋值(即在没有给数据表设定缺省规则或给每个字段设定缺省值的情况下),否则便发生错误。因此我用VB编写了一个处理函数,将其放入标准模块,以供相应程序调用。函数首先判断是否给字段赋值,若没有,则根据字段类型的不同赋予不同数值(数字赋零,字符赋空格)。...
用Visual C++开发数据库应用程序 EMAIL:zzh1415@21cn.com 1、 概述 1、1 Visual C++开发数据库技术的特点 Visual C++提供了多种多样的数据库访问技术——ODBC API、MFC ODBC、DAO、OLE DB、ADO等。这些技术各有自己的特点,它们提供了简单、灵活、访问速度快、可扩展性好的开发技术。 简单性 Visual C++中提供了MFC类库、ATL模板类以及Ap...
Delphi 是具可视化界面的面向对象编程语言,它以其功能强大、简便易用等诸多特性,深受编程人员的欢迎。Delphi 中提供了数据库引擎 BDE(Borland Database Engine),并内含众多的数据库调用构件,为编程人员开发客户/服务器应用程序提供了方便。通常情况下,利用 Delphi 开发数据库应用程序,可以使用TTable、TDataSource、TDBEdit、TDBNavi...
各子系统集成的技巧 1、选项组、开关按钮、组合框等控件的运用 在窗体上将这些控件巧妙地加以运用可以有机地将有关系统通过一个窗体来控制,这些控件选择值可以传递到查询、报表及宏中的条件中去,从而使得对查询、报表及宏的控制显得灵活方便。 2、选项卡控件的运用 在Access 97 版中新增加了“选项卡”控件,这更使Access可以在有限的窗...
1.having 子句的用法 having 子句对 group by 子句所确定的行组进行控制,having 子句条件中只允许涉及常量,聚组函数或group by 子句中的列. 2.外部联接"+"的用法 外部联接"+"按其在"="的左边或右边分左联接和右联接.若不带"+"运算符的表中的一个行不直接匹配于带"+"预算...