Delphi数据库处理组件BDE、ADO、InterBase和dbExpress详细说明

Delphi数据库访问组件IBDAC实战:Firebird/InterBase原生连接与性能优化 数据库访问组件是Delphi开发中的关键环节,传统中间层如BDE、ADO、dbExpress在性能、兼容性和部署方面存在诸多痛点。原生连接技术通过直接调用数据库客户端API,绕过冗余中间层,能显著提升数据交互效率与稳定性。IBDAC作为专为InterBase和Firebird设计的组件库,全面支持Delphi 6至13,具备轻量部署、低学习成本和持续更新等优势,广泛应用于存量系统改造、ERP进销存、移动端数据同步等场景。本文围绕IBDAC v9.0.0的安装部署、核心组件使用、事务控制、字符集处理、大数据量 阅读详情

Delphi数据库处理组件BDE、ADO、InterBase和dbExpress详细说明

 第一节 BDE、ADO、InterBase和dbExpress
    Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。 另外,Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase 数据库的专门的方法。
    BDE(Borland Databas Engine), 是Delphi中最古老的技术,从delphi 2.0加入BDE 技术以后,一直是Delphi处理数据库的事实上的标准。BDE 是一个基于驱动程序的体系结构,每一种数据格式或数据源都有一种驱动程序来驱动相近的数据源。BDE 可以很好的支持现在最流行的ODBC API方法,ODBC是一种C/C++ 应用程序编程接口(API ),无论是对任何一种客户/ 服务器关系型数据库管理系统(RDBMS ),还是最流行索引顺序访问方法(ISAM)数据库(Jet、Foxpro), 都能很好的访问。
    同时,由于BDE 的驱动程序主要直接来自于第三方开发商,所以,对于像Oracle这些非微软的数据库,执行效率上比较高。正是这些特点,使BDE 技术还是得到了很多数据库开发程序员的欢迎。
    ADO 技术是微软提出来的处理关系型数据库和非关系型数据库的新技术,它基于微软被称为OLE DB的数据访问模式,它是专门为了给大范围商业数据源提供访问而设计的,包括传统的关系型数据表、电子邮件系统、图形格式、Internet资源等。ADO 所需内存更少,更适合大流量和大事务量的网络计算机系统。
    ADO 顶层有三个对象:Connection、Command、Recordset。
    Connection用以指定数据源,建立和数据源的连接。
    Command 对象用以对数剧源执行指定的命令,可以接受SQL 语句,表和存储过程的名称,执行SQL 查询,更新数据,插入纪录等。
    Recordset 对象表示的是来自表或命令执行结果的记录全集,操纵来自提供者的几乎所有数据。
    由于ADO 技术的迅速普及,从Delphi 5.0  开始,加入了ADO 技术的模块,并逐步成为Delphi数据库设计的主流。但是,和VB的ADODC 相比,它还是有所不同的,在数据绑定上,它更多的吸收了BDE 的特点,以做到和原来的程序兼容,同时,它又可以接受标准ADO 技术的各种属
性和方法,在接受这些属性和方法时,它是和数据绑定控件脱离的,当然从某种意义上来说,这种方案提高了执行效率,给设计人员以更多的选择。
    dbExpress 是Delphi 6.0加入的最新的数据库模块,它不使用缓存,可以快速浏览大量的数据,但是,不使用缓存就不能更改,所以它的标准方式是只读的。它一个重要的特点是交叉平台,可以和Linux 数据库连接,速度相当快。
    下面的讨论,将以ADO 技术为主线,最后再说明BDE 和dbExpress的应用方式。

    第二节  ADO 面板的主要组件
    ADO 面板一共有7 个组件:
  
    ADOConnection: 主要用于建立数据库的连接;
    ADOdataSet:ADO 提取和操作数据库的主要数据集,可以直接连接到数据库,也可以通过 ADOConnection连接到数据库。
    ADOtable:主要用以操作和提取单个基表的数据,可以直接连接到数据库,也可以通过 ADOConnection连接到数据库。
    ADOquery:通过SQL 语言提取数据,其连接数据库的方式和前两种一样。
    ADOStoredProc: 这个组件专门用于运行数据库中的存储过程。
    ADOCommand:该组件用于运行一些SQL 命令,这个组件可以和支持数据集的组件一起使用,也可以直接从一个基表中提取一个数据集。
    RDSConnection: 一个进程或一台计算机传递到另一个进程或计算机的数据集合。
    为了连接数据绑定控件,上述组件往往要和处于Data Access 中的Datasource配合使用。
    可以看出,和VB的ADODC 不同的,Delphi中解决同一个问题提供了多种方案,看起来似乎增加了麻烦,但是却可以给程序员更大的自由空间,便于设计出高效率的数据库程序来。
    下面通过几个例子来说明ADO 控件的用法。

    第三节 ADOtable组件
    ADOtable、ADOdataSet、ADOquery和ADOStoredProc都继承同一个父类TCustomADODataSet,所以,在属性事件和方法上有很多相似的地方,但它主要是针对数据库中的表进行操作。
      
    ADO -〉ADOtable
    属性:
    Name='控件名'
    ConnectionString='连接字符串'
        可以通过点击右边的按钮,通过向导建立数据源。有时候需要知道相对路径,可以用下面的方法找到程序当前的路径:
   
    tpath:=ExtractFilepath(Application.Exename);

    文件名:=Tpath+'../data/Test.mdb'

    表明数据库在当前程序上一层的Data文件夹下。

    TableName='表名'
    Active=true

    这就激活了数据源,为了和绑定控件联系,要增加一个DadaSource控件。事实上,所有的绑定控件都是和DadaSource联系。

    Data Access-〉DadaSource
    属性:
    Dataset=ADOtable.Name
   
    加入绑定控件:
    Data Controls-〉
   
    DBgrid(表格)
    属性
    DadaSource='DadaSource.Name'

    DBNavigator(导航条)
    属性
    DadaSource='DadaSource.Name'

    运行一下可以看出关系

    下面介绍一下ADOtable的一些重要的方法,这些方法大部分和Table是兼容的。
    为了便于叙述,ADOtable控件的Name定为 ADOtable1

   1)移动指针
   第一个:   ADotable1.First;
   最后一个: ADotable1.Last;
   下一个:   ADotable1.Next;
   前一个:   ADotable1.Prior;

   2)从字段中取出数据
   通过如下方法可以访问字段的值

       ADOtable1.FieldValues['字段名']
       ADOtable1.Field[索引值]
 
       在读写字段的时候,又是根据需要可以加上强制类型转换      
       例如:
       Edit1.text:=ADOtable1.Field[0].AsString;
      
       用下面的方法可以去除字段的性质:

       ADOtable1.fielddefs[索引值].name;     字段名
       ADOtable1.fielddefs[索引值].Size;     字段大小
       ADOtable1.fielddefs[索引值].Datatype; 字段属性

    3)修改数据:
       修改数据的时候,需要先建立EDIT方法,然后用Post方法才能真正的写入。
   
   ADOtable1.edit;
   ADOtable1.FieldValues['姓名']:='王秀琴';
   ADOtable1.post;

    4)增加一条空纪录: ADOtable1.append;

       新增纪录也可以用如下方法,在新增纪录的同时输入数据

       ADOtable1.appendRecord(xxx,xxx,xxx,....);
 
    5)删除当前纪录:ADOtable1.delete;
       如果在ADOtable1的OnBeforeDelete方法中写下:
       if messagedlg('确实要删除吗?',mtinformation,[mbyes,mbno],
          0)=mrno then abort();
       可以实现删除前的提示。      

    6)过滤
    可以用如下的方法实现数据的过滤

    在ADOtable1的OnFilterRecord方法中写下:
      Accept:=(条件);

    然后

    ADOtable1.filtered:=true;  为实现过滤。
    ADOtable1.filtered:=false;  为解除过滤。

    7)指针在文件的头尾

    指针在最后一条记录之后  ADOtable1.Eof
    指针在第一条记录之前    ADOtable1.Bof

    如此可以实现对数据库的遍历
    
    form1.ADOtable1.first;
    while not form1.ADOtable1.eof do
        Begin
            .......   
           form1.ADOtable1.next;
        End;
    
    8)此外, ADOtable组件还继承了ADO 中的RecordSet对象几乎全部属性和方法,简述如下:

with adoTable1.Recordset do
begin

   //属性
   PageSize                     一页所包含的记录数
   PageCount                    数据的页数
   AbsolutePage;                当前记录所在页      
   AbsolutePosition;            当前记录的序号位置
   BOF;                         指针在第一个记录之前
   EOF;                         指针在最后一个记录之后

   //方法
   AddNew fieldList,Values;     创建新记录,其中fieldList为用数
                             组表示的字段名集,Values为用数组表
                             示的数据集。
   Cancel;                      取消上一步所作的修改
   Update Fields,Values;        保存对当前记录所作的修改
   Delete;                      删除当前记录
   Move(n);                     移动n 条记录
   MoveFirst;                   移动到第一条纪录
   MoveLast;                    移动到最后一条纪录
   MoveNext                     移动到下一条纪录
   MovePrevious                 移动到上一条纪录
   Requery;                     通过从新执行对象所基于的查询,以
                              更新RecordSet 对象中的数据。
end;

    使用Recordset 对象来处理数据集的数据,会发现数据帮定控件的指针一般不会跟着移动,这实际上给设计者提供了另一个在后台快速处理数据的方法。

    附录:关于TActionList控件的使用
    在Standard面板,提供了一个TActionList 控件,它集中了大部分按钮的使用方法,可以简化按钮的设计。
    方法:
    调入TActionList,双击,可以看到一个面板,右键 -〉New Standard Action 选择 Datasat下的适当的控制,可以选择多个。
    以后加入的开关,只要在属性Action 中选择适当的项目就可以了,不需要专门编程,实例见“ActionList应用”。

    第四节 ADOQuery组件
    和ADOtable组件一样,ADOquery继承了同一个父类TCustomADODataSet,所以,上面说到的ADOtable属性事件和方法基本上是通用的,但它主要是针对数据库中的SQL 命令进行操作。
    下面主要说一下ADOquery特殊的地方。

    1)SQL 属性
    SQL 是TStrings类型的属性,包含了ADOquery组件要执行的SQL 命令,是ADOquery最为重要的属性之一。
    在应用程序中,需要调用Open方法或者ExecSQL 方法来执行在SQL 中的命令。在设计阶段,可以利用属性编辑起来编写。
    例如:
    Width ADOquery do
      Begin
        //重新写入时,要关闭原来的查询
       Close;
       width SQL do
         Begin
          //因为Add是在原来的基础上加入,所以先清除原来的SQL命令
           Clear;
           Add('selsct 编号,姓名,奖金')
           Add('From 奖金表')
         End;
        //执行SQL 命令
       Open;
      End;
 
    查询命令也可以这样来写:

 s1:='编号';
 s2:='姓名';
 s3:='金额';
 with ADOquery1 do
    begin
       sql.Clear;
       SQL.Add('select ');
       SQL.Add(s1+','+s2+','+s3);
       SQL.Add(' From 奖金 ');
       execsql;
       active:=true;
    end;

    效果是一样的。

    第五节 ADOConnection 和 ADODataSet

    虽然ADOTable和ADOQuery组件可以非常简单的连接数据库,但是当需要更加精细的控制数据库的时候,往往需要应用ADO 更多的方法,我们知道,支撑ADO 的主要由Connection,Command,Recordsrt三个对象组成, 对应的就有ADOConnection和ADOCommand控件,而Recordsrt对象属性和方法,封装在ADODataSet中,同时ADODataSet本身,也具备和ADOtable组件相同的对数据绑定控件控值的属性和方法。
    这就大大提高了对数据库的控制能力。
    在ADO 顶层有三个对象中Connection处在最顶层,用以指定数据源,建立和数据源的连接。所以,ADOConnection必须和其它的数据控件连接才有效,最常用的就是和ADODataSet配合。
    下面首先介绍连接方法,然后再讨论其它的问题

    1)ADOConnection的加入和连接   

    加入ADOConnection
    属性:ConnectionString='连接字符串'

    加入ADODataSat
    属性:Connection='ADOConnection1' ..... (ADOConnection,Name)
          CommandType=cmdtable   ...使用表连接 
          CommandText 根据上面的选择,或选择表,或出现SQL 编辑框。
          Active=True 激活。
     加入DataSource
     属性:Dataset=ADODataSat  完成连接,再连接数据绑定控件。

     2)ADOConnection的重要属性和方法

     属性:

     a).Attributes
        设置连接的数据库自动处理事务的能力
            xCommitRetaining:提交一个事务后自动开始一个新事务
            xAbortRetaining :回退一个事务的同时开始一个新事务
    
     b).Connected
        标识和数据库的连接受否处于激活(True)

     方法:

     c).Open(UserID,PassWord)
        打开一个连接(可以提供用户名和密码)

     d).Cancel
        关闭数据库的连接

     e).Close
        释放所有的系统关联资源

     f).Execute 执行一个SQL 命令。 
     完整的表述是

      Execute(SQL命令,该命令设计的记录数目,Option)
   
     其中,Option的值如下

     eoAsyncExecute             异步执行指定的命令
     eoAsyncFetch    给定Cache属性的值后,再异步的取得数据
     eoAsyncFetchNonBlocking   非阻塞式线程执行
     eoExecuteNoRecords        没有返回纪录

     g).GetProcedureNames(List:Tstring);

      获取数据库服务器上的存储过程名称,过程名保留在List参数中。
     f).GetTableNames(List:Tstring;SystemTables:Boolean=False)

    获取数据库的数据表,表名存放在List参数中,SystemTables指示是否获取数据库系统表的名称,系统表是关于数据库类型定义和用户信息的数据表,是数据库本身自动产生的。在特殊的设计中,这个表格可能会有用。    

   3)ADODataSet的属性和方法
    我们在ADOTable中讨论的属性和方法,几乎都可以在ADODataSet中得到应用,但还有几个特殊的属性:

   CommandType

     主要用于控制CommandText属性的状态,其中:
                     
            cmdtable   ...CommandText使用“表名”连接
                             (内部是做了SQL 对各列的查询);
            cmdTableDirect  ...CommandText使用“表名”连接
                       (内部不做SQL ,而是真正的表名连接);
            cmdtext   ....使用SQL命令文本;
            cmdfile   ....CommandType属性值作为持久的文件名;
            cmdStoredProc...CommandType属性值作为存储过程名称
                                     来计算;
            cmdUnKnown  ....不知道(默认为SQL)

   CommandText
      根据CommandType的设置,向提供者发出“表名”或SQL 命令。

            第六节 TADOCommand对象
    在ADO 的层次结构中,Command对象和RecordSet是处在同一层上,它主要用来对数剧源执行指定的命令,比如SQL 语句,表和存储过程的名称、更新数据,插入纪录等。虽然其它的控件也能执行这些方法,但需要遇到需要用Command 本身的属性和方法来控制数据源的时候,利用这个对象将是十分方便的事情。
    主要属性:
      CommandType
      CommandText
      Cancel
      和上面介绍的相同

      Assign(Source:Tpersistent)

    把另一个ADOCommand 组件的所有属性复制到当前的ADOCommand组件中,调用的时候按名存取组件对象。

    下面的例子可以看到ADOConnection、TADOCommand、ADODataSet、DataSource和其它数据绑定控件是如何作用的。
    放入控件
    ADOConnection
    TADOCommand
    ADODataSet
    DataSource
    Memo
    DBgrid
    Button

    属性(注意一下TADOCommand1和ADODataSet1的关系是平等的):

    ADOConnection1---ConnctionString=连接字符串
    TADOCommand1-----Connection=ADOConnection1
                     commandType=cmdText
    ADODataSet1 -----Connection=ADOConnection1
                     commandType=cmdText
    DataSource1 -----DataSet=ADODataSet1
    Memo1 -----------List=空
    DBgrid1----------DataSource=DataSource1
    Button1的Click事件过程

procedure TForm1.Button1Click(Sender: TObject);
var str1,str2:string;
begin

//取出输入的SQL 语言

   str1:=trim(Memo1.text);

//由于执行SQL语言时,除了select ,其它诸如Insert,Delete,Update都需要事先关闭数
//据集,所以下面把前六个字符取出来作为判断的依据。

   str2:=copy(str1,0,6);
   ADOCommand1.CommandText:=str1;  //ADOCommand1执行命令

//检查用户是否送入的是select语句 

   if str2='select' then
        begin
         ADODataset1.Recordset:=ADOCommand1.Execute;
         ADODataset1.Open;
        end
        else
        begin
         //先关闭数据集
         ADODataset1.Close;

         //这是另一种执行SQL 命令的方法,执行delete等操作
         ADOCommand1.Execute;   

         //按全部字段送入SQL
         ADODataset1.CommandText:='select * from 奖金';
         ADODataset1.Open;      //重新打开
        end;
end;


        第七节 TADOStoredProc对象

    当应用程序必须使用数据库中的存储过程的时候,也可以使用ADOStoredProc 控件。
    一个存储过程是一组语句,提前建立好保存在数据库服务器上,可以反复被执行,在服务器上完成和数据库有关的任务,并将结果传给用户。
    许多存储过程在运行时还需要一系列的参数,可以通过Parameters属性来设置,这个数据集和其它的ADO 数据集相似,可完成类似的任务。

    主要属性:

    Active  设为true时激活数据集;
    Connection  如果应用程序添加了ADOConnection,可以在这里连接;
    ConnectionString 如果没有Connection属性,可以在这里做连接字符串;
    DataSource   设置另一个数据源,一般不要设置,事实上如果这样做Delphi会报错;
    Filter     设置筛选纪录的条件;
    Filtered   决定是否激活Filter中设置的筛选条件;
    Parameters  设置存储过程中使用参数的属性;
    ProcedureName   设置数据集使用存储过程的名字,可以用下拉菜单选择。

    主要方法

    DeleteRecords  删除一条或多条纪录
    Edit  设置数据集为编辑状态
    EnableCountrols  使数据绑定控件显示数据
    DisableCountrols 使数据绑定控件不显示数据
    First  指针指向第一条纪录
    Last   指针指向最后一条纪录
    Prior  指针指向上一条纪录
    Next   指针指向下一条纪录
    MoveBy(n) 指针指向前或后的第n 条纪录
    GetFieldData 把一个字段的当前值提取到缓存中去
    IsEmpty  判断一个数据集是否为空
    Open  打开一个数据集
    Refresh 重新从数据库中提取数据更新数据集     
    ADOStoredProc的主要的事件与ADOQuery基本相同,可以参考使用。

       第八节  主从结构的数据库应用程序
    主从结构的数据库应用程序,是属于数据库的高级应用技术,下面我们通过一个实例来说明建立这种数据库应用程序的方法。   

    1)建立主从结构

    加入  ADOTabl1:
    属性
    Connectionstring=连接字符串
    Tablename=表名
    Active=true 激活

    加入  Datasource1
    属性
    DataSet=ADOTable1

    连接上主表,做上有关的绑定控件

    下面做从表

    加入  ADOTabl2:
    属性
    Connectionstring=连接字符串
    Tablename=表名
    Active=true 激活

    下面是做主从表的关键(在ADOTabl2中)
    MasterSource=DataSource1
    MasterFields=连接字段
   (点..出现对话框,选中两个表的连接字段,Add 加入,Ok)
    这就完成了主从表的连接            

    加入  Datasource2
    属性
    DataSet=ADOTable2

    连接绑定控件

    观察主从表的工作情况,这个方法几乎对所有的Delphi数据库控件都是适用的。  

      第九节  BDE 的应用

    BDE 是Borland开发的最成熟的数据控制对象集,它对于像Oracle这些第三方数据库,由于是直接由开发商提供了驱动程序,所以执行效率比较高,到现在仍然受到不少程序员的欢迎。
    它里面主要是table和Query两个数据源控件。从性能和使用方法都和ADOtable和ADOQuery 相似的(Recordset属性和方法除外,这是ADO 特有的)值得注意的是,它们连接数据源的方式采用了别名,也就是应用的时候事先一定要设计好ODBC数据源,并给定数据源一个别名。
    属性
    DatabaseName=别名
    在table中,TableName=表名
    在Query中,SQL=SQL命令
    然后
    Active=true
    就连接上了。
    ODBC数据源的别名,实际上是写入计算机的注册表的,所以如果希望通过程序来设置别名,可以通过程序直接改写注册表来解决,具体请看实例。

    一、Ttable组件

    该组件用来表示数据库的一个基表,它的主要属性如下:

    DatabasName:数据源的名字
    TableName:  表的名字
    Active:     true表示活动

    Filter: 数据筛选
    Filtered: 控制Filter的使用,False则筛选不起作用。
    FilterOptions:其中包括两个选项
    foCaseInsensitive 决定是否严格按照Filter条件中大小写匹配查询,true为大小写匹配。
    foNoPartialCompare
                “*”是否作为数字统配符存在,true 则视为单个字符,false则视为统配符。
    IndexFieldNames 设置那些字段进行记录的排序,逗号间隔,这些字段必须是关键字端。
    IndexName  设置基表的第二个索引字段,如果这个属性是空的,则基表按默认索引排序。
    MasterSource 在主从表关系中,设置从表关联的主表对应数据源。
    MasterFields

    别名和表名调用的实例:

-----------------------------------------------------------------------
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables;

type
  TForm1 = class(TForm)
    Database1: TDatabase;
    Session1: TSession;
    Table1: TTable;
    Button1: TButton;
    ComboBox1: TComboBox;
    ListBox1: TListBox;
    Label1: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var I: Integer;
  DBNames: TStrings;
begin
   DBNames := TStringList.Create;
   //Session1.GetDatabaseNames(DBNames);
   Session1.GetdatabaseNames(DBNames);
    for I := 0 to DBNames.Count - 1 do
        ComboBox1.Items.Add(DBNames[I]);

    Database1.GetTableNames(ListBox1.Items, False);
end;

{ADOConnection1.GetTableNames(ListBox2.Items, False);
Database1.GetTableNames(ListBox1.Items, False);}

procedure TForm1.Button2Click(Sender: TObject);
begin
 Database1.Close;
 Database1.AliasName:= ComboBox1.Text;
 Database1.Open;
 ListBox1.Clear;
 Database1.GetTableNames(ListBox1.Items, False);
end;

end.

-----------------------------------------------------------------------  

            第十节 开发InterBase应用程序
    InterBase数据库是Borland公司开发的数据库产品,在Borland产品得到广泛的应用。该数据库是Delphi和Kylix(被称作Linux下的Delphi)开发的跨平台应用程序可用的数据库之一(其它还有Qracle、MySQL、DB2)。InterBase 有与Delphi结合紧密的特点,而且,在Delphi安装盘中。还提供了InterBase 数据服务和客户端软件,可以方便的构筑InterBase数据库的开发环境。
    InterBase 的组件都放在InterBase面板中,从使用方法上来说,和上面介绍的BDE 或者ADO 相似,可以自己查阅有关资料。
    这里就不再讨论了。
 
           第十一节  dbExpress数据库控制
    dbExpress 是Delphi 6.0 新加的功能,dbExpress是一个跨平台的、不依赖于数据库的一个独立的层。它提供了一些方法用于动态SQL的处理。它定义了一个接口用于访问不同的SQL 服务器,并为各种数据库提供了驱动程序。
    这些驱动程序在Windows和Linux下都能使用(Windows下为动态连接库.DLL,而在Linux下为共享对象.so文件)。 这种API 驱动,减少了数据库引擎需要的额外开销。
    标准的dbExpress数据库应用是不使用数据缓存的,由于保持核心运行时数据库访问层的简单和轻便。所以,dbExpress提供了高性能的数据库连接,运行速度很高。但是,不用数据缓存将无法修改数据,而且,指针的移动也是单向的。为了能够修改数据,dbExpress也提供了一种使用数据缓存的控件,当然这无疑也会影响到效率。
    目前在dbExpress能够应用的数据库有Qracle、MySQL、DB2和InterBase,这里以InterBase 数据库为例。

    一、单向的数据连接
   实例数据库为Delphi提供的Employee.gdb。

   1)加入 TSQLConnection
      属性:
      LoginPrompt=False   不用用户名和密码显示
      DirverName=InterBase    驱动程序名
      ConnectionName=IBLoca   默认数据库(Database.gdb)     
      Params 点对话框出现信息表,修改数据库的名字Employee.gdb
      Connected=true  如果连接正确,将可以顺利的为true;

    2)加入 TSQLDataset
       属性:
       SQLConnection=SQLConnection名字
       CommandType=ctTable     用表名连接
       CommandText=表名
       Active=true     如果正确,将可以为true;

    3)加入 TDataSource
       属性:
       DataSet=SQLDataSet名字
      
    4)加入数据绑定控件,由于不用缓存,所以不能用DBGrid,这里只用简单的DBEdit。
      注意属性:
      DataSource=DataSource名字
      DataField=字段名

    5)注意,SQLDataset移动指针只有两个方法

     SQLdataset1.Next;
     SQLdataset1.First;

     这就可以运行了。         

    二、可以修改的数据连接

    做一个主从结构的数据显示,要求从表是可以修改的,而且要用DBGrid,所以,这里要用一个新的控件来联系:

    TSQLClientDataSet

    和TSQLDataset不同TSQLClientDataSet是使用数据缓冲区的,所以,用它连接数据源可以修改,也可以用DBGrid显示。
    和上面方法相同,加入TSQLConnection作数剧源。
      属性:
      LoginPrompt=False   不用用户名和密码显示
      DirverName=InterBase    驱动程序名
      ConnectionName=IBLoca   默认数据库(Database.gdb)
      Params 点对话框出现信息表,改数据库名:Employee.gdb
      Connected=true  如果连接正确,将可以顺利的为true;

    1)做主表

       加入 TSQLDataset
       属性:
       SQLConnection=SQLConnection1
       CommandType=ctTable     用表名连接
       CommandText=PROJECT     (这是在Employee.gdb内的一个表)
       Active=true     如果正确,将可以为true;   

       加入 TDataSource
       属性:
       DataSet=SQLDataSet1
      
       加入数据绑定控件两个DBEdit,显示字段分别为PROJ_ID和PROJ_NAME。  
       用同样的方法作两个指针移动的Button。

    2)做从表

       加入TSQLClientDataSet
       属性:
       SQLConnection=SQLConnection1
       CommandType=ctTable     用表名连接
       CommandText=PROJ_DEPT_BUDGET (这是在Employee.gdb内的另一个表)
       Active=true   (激活)
       做主从连接
       MasterSource=DataSource1
       MasterFierds=PROJ_ID    (连接字段)
      
       加入 TDataSource
       属性:
       Name=DataSource2
       DataSet=SQLClientDataSet1

       加入DBGrid,与DataSource2连接。

    这就完成了一个主从表制作,试验一下,可以发现从表是可以修改的。
    仔细研究一下这个过程,归纳出设计的一般方法。一般来说,dbExpress主要在网络中使用,特别是后面将要提到的WebSnap 快速网络开发方法,将会给dbExpress 以很大的施展空间。 

----文章来源于大富翁论坛,大富翁论坛版权所有----

Delphi2006高效数据库开发(李维著) Delphi2006 DbExpress高效数据库开发(李维著),介绍了在Delphi环境中,利用dbExpress技术对InterBase数据库的开发。 【说明:只包含本书的前四章内容】 立即下载

相关推荐

interbase编辑软件IBExpress

InterBase7.0数据库的建立且与Delphi2010的连接 工程文件 InterBase7.0下载 数据库编辑软件IBExpress下载 等文件下载请见:http://blog.youkuaiyun.com/yorkworlddream/article/details/17473913

delphi ADO数据库应用程序

ADO 组件面板工提供了 7 个组件 分别是 TADOConnection TADODataSet,TADOTable ,TADOQuery ,TADOStoredProc ,TADOCommand 和 RDSConnection 其中后面的 6 个组件可以直接连接到数据库 也可以通过 TADOConnection 组件连接到数据库 这些组件的作用如下: TADOConnection 该组件用于建立数据库的连接 ADO 的数据源组件和命令组件可以通过该连接组件运行命令及从数据库中提取数据等。 TADODat

qq_43404969的博客 893

InterBase7.0安装包(delphi2010安装成功)

InterBase7.0数据库的建立且与Delphi2010的连接 工程文件 InterBase7.0下载 数据库编辑软件IBExpress下载 等文件下载请见:http://blog.youkuaiyun.com/yorkworlddream/article/details/17473913

Delphi数据库处理(感谢:neverdeath)

KeyLife富翁笔记 作者: neverdeath标题: Delphi数据库处理 关键字: 分类: 个人专区 密级: 公开 (评分: , 回复: 0, 阅读: 193) »»

wwcz898的专栏 1896

【SoloPi】SoloPi使用2-功能使用,录制回放

Soloπ是什么 Soloπ是一个无线化、非侵入式的Android自动化工具,公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。 录制回放功能 Soloπ拥有录制操作的能力,用户只需要通过Soloπ执行用例步骤,Soloπ就能够将用户的操作记录下来,并且支持在各个设备上进行回放,这一切都能够在手机上独立完成。 ...

q_Catherine的博客 5829

STM32F407 BootLoader实战:从零搭建到OTA升级(附完整源码)

本文详细介绍了为STM32F407微控制器从零搭建BootLoader并实现稳定OTA升级的完整实战指南。内容涵盖Flash分区规划、链接脚本配置、核心跳转逻辑、中断向量表重定向、可靠的升级流程设计,并深入探讨了双备份与回滚机制以提升工业级可靠性。文章提供了可直接使用的代码框架,并分享了关键调试技巧,帮助开发者快速掌握STM32远程固件更新技术。

weixin_29192211的博客 442

Delphi数据库处理组件BDE、ADO、InterBase和dbExpress详细说明 .

2008-03-21 00:26 2134人阅读 评论(0) 收藏 举报 Delphi数据库处理组件BDE、ADO、InterBase和dbExpress详细说明  第一节 BDE、ADO、InterBase和dbExpress     Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。 另外,Delph

2353939的专栏 2148

Python气象雷达数据处理实战:用PyCINRAD从基数据到PPI图的完整流程

本文详细介绍了使用PyCINRAD库处理气象雷达基数据并生成PPI图的完整流程,涵盖环境配置、数据读取、反射率与速度数据提取、可视化优化等关键步骤。通过实战案例演示如何从原始雷达数据到专业级PPI图像生成,为气象研究和业务应用提供高效解决方案。

yog99的博客 758

黄聪:Delphi数据库处理组件BDE、ADO、InterBase和dbExpress详细说明

Delphi数据库处理组件BDE、ADO、InterBase和dbExpress详细说明  第一节 BDE、ADO、InterBase和dbExpress    Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。 另外,Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase 数据库的专门的方法。...

weixin_34378767的博客 192

保姆级避坑指南:在Ubuntu 22.04上成功复现VMamba模型(附完整环境依赖清单)

本文提供了在Ubuntu 22.04上复现VMamba模型的详细指南,包括环境准备、CUDA与PyTorch的精确匹配、依赖安装的疑难杂症解决以及完整环境清单。特别针对Linux系统下的环境复现问题,提供了实用的避坑技巧和验证方法,帮助开发者高效完成VMamba模型的部署。

weixin_29083373的博客 263

WinCC与施耐德PLC的Modbus TCP通信实战指南

本文详细解析了西门子WinCC与施耐德PLC通过Modbus TCP协议实现通信的完整实战流程。内容涵盖硬件网络配置、Modbus地址映射核心规则、WinCC驱动连接建立、变量创建及高级数据访问技巧,并提供了常见故障排查思路,帮助工程师高效解决跨品牌设备通信难题。

weixin_29194693的博客 1001

Delphi数据库处理

Delphi数据库处理第一节 BDE、ADO、InterBase和dbExpress    Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。另外,Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase 数据库的专门的方法。    BDE(Borland Databas Engine),是

James Deng的专栏 3934

安装VMware,出现没有虚拟网络适配器的问题

安装VMware,出现没有虚拟网络适配器的问题

Young_Harry的博客 1万+

delphi数据库技术简介

第一节 BDE、ADO、InterBase和dbExpress    Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。另外,Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase数据库的专门的方法。    BDE(Borland Databas Engine),是Delphi中最古老的技

delphi 1492

Python实战:打造学生信息管理系统

通过本教程,我们构建了一个简单的学生信息管理系统,实现了基本的添加、删除、修改和查询功能。当然,这个系统还有很多可以改进和扩展的地方,比如添加用户界面、增加数据持久化功能、支持批量操作等。简介:本文将介绍如何使用Python编写一个功能齐全的学生信息管理系统,包括添加、删除、修改和查询学生信息的基本操作。学生信息管理系统是学校日常管理中不可或缺的一部分,它能够帮助管理人员快速、准确地管理学生信息,提高工作效率。为了实现上述功能,我们可以设计一个包含学生信息的字典,并使用函数来封装各个操作。

铭渊老黄 1491

知识图谱(Knowledge Graph)原理与代码实战案例讲解

知识图谱(Knowledge Graph)原理与代码实战案例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 1. 背景介绍 1.1 问题的由来

AI天才研究院 1078

delphi数据库处理

第一节 BDE、ADO、InterBase和dbExpress    Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。 另外,Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase 数据库的专门的方法。    BDE(Borland Databas Engine), 是Delphi中

pmj888666的专栏 419

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大富翁论坛-富翁笔记-Delphi数据库处理(转载)

Delphi数据库处理          第一节 BDE、ADO、InterBase和dbExpress    Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。 另外,Delphi还提供了专门处理Borland 公司自己的数据库产品In

diaodiaosky的专栏 3416

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Delphi数据库处理 1

第一节 BDE、ADO、InterBase和dbExpress    Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。 另外,Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase 数据库的专门的方法。    BDE(Borland Databas Engine), 是Delphi中

pmj888666的专栏 1635

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: Delphi的OverRide、OverLoad和Virtual方法
下一篇: Delphi中三种延时方法及其定时精度分析
CKLi
博客等级 码龄22年 51粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值