问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2023-04-11 02:05

我来回答

1个回答

热心网友 时间:2023-10-11 12:13

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

  由于用户一次输入的数据量一般情况下较小(不会超过几百条记录) 所以临时表可以建立在内存中 这样处理速度较快   方法 使用查询控件(TQuery)  第 步 在窗体上放上查询控件(TQuery) 设置好所连接的数据表   第 步 使 TQuery CachedUpdates=True;        TQuery RequestLive=True;  第 步 在原有的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′  这样临时表就建立完成了

  方法 使用代码创建临时表  代码如下   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;

  在程序中按如下方法使用   procere TForm Button Click(Sender: TObject);  var ADataSet:TDataSet;  begin   ADataSet:=TDataSet Create(Self);   with ADataSet FieldDefs do   begin   Add(′Name′ ftString False);   Add(′Value′ ftInteger False);   end;

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

   ADataSet Free;  end;

  临时表创建完成

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

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

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

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

lishixin/Article/program/Delphi/201311/8520
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2023文科男生最吃香的专业 哪些专业好就业 在南京想找上海音乐学院的老师,怎么找? 荔枝核怎么服用-荔枝核煮水一般煮几颗合适 属虎适合什么名字2022年新生儿 有内涵热门名字精选 国内读研好,还是出国读研好 出国读研和国内读研哪个更好 在一个比例中,如果两个外项互为倒数。那么两个内向的什么是一?_百度知 ... 两个外项互为倒数,一个内向是8分之3,另一个内项是多少【怎样求出来... 在一个比例中,两个外向互为倒数,其中一个内项是8,另一个内项是_百度... 在比例中两个外项互为倒数,其中一个内向是2.75,另一个内项是多少_百度... 政委的国语词典政委的国语词典是什么 委的的国语词典委的的国语词典是什么 数据库应用系统的开发步骤 牲饩的网络解释牲饩的网络解释是什么 北宋居住客人的地方叫什么? 牲饩的意思牲饩的意思是什么 行猎的解释 罔人的引证解释罔人的引证解释是什么 猎获的解释 典妻鬻子的解释 竖_的成语竖_的成语是什么 生于忧患,死于安乐的翻译及注解 生于忧患原文及翻译 齐己《贻王秀才》原文及翻译赏析 婚庆被子上绣有泿花。寓意是什么 在感情上是浪子指的是花心吗? 如何打造抖音视频 分别论者什么意思?作何解释? 分别说部什么意思?如何解释? oled数字是占多少像素点 原委的国语词典原委的国语词典是什么 委顿的国语词典委顿的国语词典是什么 委蛇的国语词典委蛇的国语词典是什么 选聘的国语词典选聘的国语词典是什么 喝酒前喝点什么或者吃点什么比较不容易醉。 杀虫剂和杀螨剂能不能与叶面肥混合用? 扫兴的国语词典扫兴的国语词典是什么 兴味的国语词典兴味的国语词典是什么 我想问问黄花机场过夜停车怎么收费 黄花机场贵宾厅可以免费停车吗 卡塔尔世界杯气候怎么样 卡塔尔世界杯温度 卡塔尔世界杯举行期间商丘的气候特征是什么 2022卡塔尔世界杯为什么在冬季举行卡塔尔世界杯为啥在冬天 卡塔尔世界杯,阿拉伯海域的盛行风及成因? 显卡甜甜圈温度越低越好吗 “鼎”字组成六个语 其中三个是成语 感谢信发在12306哪里 写给乘务员的感谢信交给谁 健康160挂号能用微信零钱支付吗