| 订阅 | 在线投稿
分享
 
 
当前位置: 王朝网络 >> delphi >> 用Delphi 开发数据库程序经验三则
 

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

2008-06-01 01:59:02 编辑來源:互联网 繁體版 评论
 
 
  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$#@60;$#@62;nil then

  begin

  try

  TempTable:=TClientDataSet.Create(application);

  TempTable.FieldDefs.Assign(AFieldDefs);

  TempTable.CreateDataSet;

  Result:=(TempTable as TDataSet);

  Except

  if TempTable$#@60;$#@62;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(′ ue′,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 开发数据库程序经验三则
更多内容请看数据库相关文章专题,或
 
 
 
 
上一篇《Delphi6函数大全(2)》
下一篇《Delphi 插件创建、调试与使用应用程序扩展》
 
 
 
 
 
 
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

如何磨出破洞牛仔裤?牛仔裤怎么剪破洞?

把牛仔裤磨出有线的破洞 1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...

我就是扫描下图得到了敬业福和爱国福

先来看下敬业福和爱国福 今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。 今天该活动正式启动,和去年一样,需要收集“五福”...

冰箱异味产生的原因和臭味去除的方法

有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。 1、很多人有这种习...

 
 
 
  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$#@60;$#@62;nil then    begin    try    TempTable:=TClientDataSet.Create(application);    TempTable.FieldDefs.Assign(AFieldDefs);    TempTable.CreateDataSet;    Result:=(TempTable as TDataSet);    Except    if TempTable$#@60;$#@62;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(′ ue′,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。 [url=http://www.wangchao.net.cn/bbsdetail_1785128.html][img]http://image.wangchao.net.cn/it/1323424631136.gif[/img][/url] 更多内容请看数据库相关文章专题,或
󰈣󰈤
 
 
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
玉美人_珠联璧合
清纯美女米卡
清新靓丽的早晨
玲子的自信与性感
痞子的甘南日记
疑是银河落九天
雪域坝上四——纯美色
冬日恋歌——西城杨柳弄轻柔
 
>>返回首页<<
 
 
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 热帖排行
 
 
 
 
©2005- 王朝网络 版权所有