BDE 是宝兰公司的数据库引擎,BDE给我们提供了和数据库交流的接口,它成功的把应用程序接口和连接数据库部分分开,就方变了程序的移植。
  ADO 是微软公司提供的用来访问数据库的接口,通过OLE DB技术来访问数据库。
  无所谓谁好谁坏。用谁视具体情况定.

解决方案 »

  1.   

    都是数据库引擎,一个微软出的,一个时borland出的,性能差不多,
    都是bde已经不会有新版本了,ado可是才开始!
    有一点,bde对oracle支持比较好,其他的用ado吧!
      

  2.   

    当然是ADO好了
    不需要安装客户端,是基于COM的,而且性能也要优于BDE
      

  3.   

    我觉得大的系统用BDE比较好,而小的当然是ADO比较好啊,做一个Setup也可以用一张软盘就够了
      

  4.   

    ado 好:封装了几乎所有的对象,包括ole db ,不仅能够访问odbc的关系数据库还有其他的格式,如:email,excel等面向web的处理接口。
      

  5.   

    ADO是好用,但是为什么我在Delphi中用ADO比在VB中用要慢很多,仅是一些小量的查询。比如这个程序,只有几十行数据,Oracle,在Open的时候要停顿一下,而VB中则跟本不会。
    function TfrmMain.LoadListData(DeptID: Integer): Boolean;
    var
    rsTmp:TADODataSet;
    i,j:Integer;
    AItem:TListItem;
    ACol:TListColumn;
    AData:PInteger;
    strSQL:String;
    Begin
    Result:=True;
    Screen.Cursor:=crHourGlass; rsTmp:=TADODataSet.Create(frmMain);
    rsTmp.CursorLocation:=clUseClient;
    rsTmp.CursorType:=ctKeyset;
    rsTmp.Connection:=gcnOracle;
    rsTmp.CommandType:=cmdText; if DeptId=0 then
    strSQL:='Select A.*,B.DeptID From Mans A,Depts B Where B.ManID=A.ID And B.Default=1'
    else
    strSQL:='Select A.*,B.DeptID From Mans A,Depts B Where B.ManID=A.ID And B.DeptID='+Inttostr(DeptID);
    rsTmp.CommandText:=strSQL; try
    try
    rsTmp.Open; lvw.Items.BeginUpdate;
    lvw.Items.Clear;

    if lvw.Columns.Count=0 then Begin
    lvw.Columns.BeginUpdate;
    lvw.Columns.Clear;
    for i:=0 to rsTmp.FieldCount-1 do Begin
    ACol:=lvw.Columns.Add;
    ACol.Width:=80;
    ACol.Caption:=rsTmp.Fields[i].FieldName;{注意不是Name}
    end;
    lvw.Columns.EndUpdate;
    end; for i:=0 to rsTmp.RecordCount-1 do Begin
    AItem:=lvw.Items.Add;
    AItem.ImageIndex:=0;
    AItem.Caption:=rsTmp.Fields[0].AsString;

    New(AData);
    AData^:=rsTmp.FieldByName('ID').AsInteger;
    AItem.Data:=AData; for j:=1 to rsTmp.FieldCount-1 do
    AItem.SubItems.Add(rsTmp.Fields[j].AsString); rsTmp.Next;
    end;
    finally
    if rsTmp.Active then rsTmp.Close;
    rsTmp.Free;
    lvw.Items.EndUpdate;
    Screen.Cursor:=crDefault;
    end;
    except
    ErrCenter(frmMain,gcnOracle,False);
    Result:=False;
    end;
    End;
      

  6.   

    ADO是好,但是我在Delphi上用ADO怎么比VB上慢很多。也就只打开几十行数据。
    function TfrmMain.LoadListData(DeptID: Integer): Boolean;
    var
    rsTmp:TADODataSet;
      i,j:Integer;
      AItem:TListItem;
      ACol:TListColumn;
      AData:PInteger;
      strSQL:String;
    Begin
    Result:=True;
      Screen.Cursor:=crHourGlass;  rsTmp:=TADODataSet.Create(frmMain);
      rsTmp.CursorLocation:=clUseClient;
      rsTmp.CursorType:=ctKeyset;
      rsTmp.Connection:=gcnOracle;
      rsTmp.CommandType:=cmdText;
      if DeptId=0 then
      strSQL:='Select A.*,B.DeptID From ManTab A,DeptMan B Where B.ManID=A.ID And B.Default=1'
      else
      strSQL:='Select A.*,B.DeptID From ManTab A,DeptMan B Where B.ManID=A.ID And B.DeptID='+Inttostr(DeptID);
      rsTmp.CommandText:=strSQL; try
       try
         rsTmp.Open;      lvw.Items.BeginUpdate;
          lvw.Items.Clear;      if lvw.Columns.Count=0 then Begin
            lvw.Columns.BeginUpdate;
            lvw.Columns.Clear;
            for i:=0 to rsTmp.FieldCount-1 do Begin
              ACol:=lvw.Columns.Add;
              ACol.Width:=80;
              ACol.Caption:=rsTmp.Fields[i].FieldName;{注意不是Name}
            end;
            lvw.Columns.EndUpdate;
          end;      for i:=0 to rsTmp.RecordCount-1 do Begin
            AItem:=lvw.Items.Add;
            AItem.ImageIndex:=0;
            AItem.Caption:=rsTmp.Fields[0].AsString;        New(AData);
            AData^:=rsTmp.FieldByName('ID').AsInteger;
            AItem.Data:=AData;      for j:=1 to rsTmp.FieldCount-1 do
             AItem.SubItems.Add(rsTmp.Fields[j].AsString); rsTmp.Next;
          end;
        finally
         if rsTmp.Active then rsTmp.Close;
          rsTmp.Free;
          lvw.Items.EndUpdate;
          Screen.Cursor:=crDefault;
        end;
      except
    ErrCenter(frmMain,gcnOracle,False);
        Result:=False;
      end;
    End;
      

  7.   

    ADO是微软做的,对自己的支持当然会好一点
      

  8.   

    这个问题问了好多次
    我的理解
    BDE成熟,你也可以说它老
    ADO年轻,你也可以说它不完善