请各位实际使用过的大侠给个意见
bde太老了,好像没有必要考虑了
ado比较通用,dbexpress最新的通用接口,
还是选择针对数据库的专用控件,比如oracle的oda,interbase的ibx
我平时使用最多的是sybase,oracle,sql server还有做那种单据风格的录入界面,各位是用ExpressQuantumGrid或者infopower,还是ehlib
或其他什么

解决方案 »

  1.   

    呵呵,dbe太老……是有点老但用起来还不错哩。
      

  2.   

    //-------------------------------------------------------------------------
    // 文件名:DBBase.pas
    //
    // 类名:数据库基类
    // 描述:
    // 封装dbExpress的SQLConnection,SQLQuery,SQLTable,SQLClientDataSet和DataSource
    // 实现了简单的数据库链接,执行SQL语句和与DBGrid控件的链接
    //
    // 作者:Win Lai
    // 创建日期:2003-12-23
    // 修改日期:2003-12-25
    //
    // 使用:
    //
    // 1.定义类对象。
    // MyClass : TDBBase;
    //
    // 2.分配空间给类对象。
    // MyClass := TDBBase.Create(nil);
    //
    // 3.建立数据库链接。
    // MyClass.Connect([用户名], [密码], [数据库名])
    //
    // 4.操作数据库。
    // MyClass.SQLExec([SQL语句]) // 无返回数据集,用SQLQuery实现操作
    // MyClass.SQLOpen([SQL语句]) // 返回数据集,用SQLClientDataSet实现操作
    //
    // 5.链接数据库控件。
    // MyClass.SetDataSourceToDataControl([DBGrid控件])
    // MyClass.SetDataSourceToDataControl([DBEdit控件])
    // MyClass.SetDataSourceToDataControl([DBComboBox控件])
    // MyClass.SetDataSourceToDataControl([DBMemo控件])
    //
    // 6.释放类对象。
    // MyClass.Free;
    //
    //-------------------------------------------------------------------------unit DBBase;interfaceuses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    SqlExpr, DB, DBLocalS, DBGrids, DBCtrls;type
    TDBBase = class(TObject) private
    FSQLConnection: TSQLConnection;
    FSQLQuery: TSQLQuery;
    FSQLTable: TSQLTable;
    FSQLDataSource: TDataSource;
    FSQLClientDataSet: TSQLClientDataSet;
    protected public
    constructor Create(AOwner: TComponent); virtual;
    destructor Destroy; override; function SQLExec(SQLStrings: string): boolean;
    function SQLOpen(SQLStrings: string): boolean; procedure SetDataSourceToDataControl(DataControl: TDBGrid); overload;
    procedure SetDataSourceToDataControl(DataControl: TDBEdit); overload;
    procedure SetDataSourceToDataControl(DataControl: TDBComboBox); overload;
    procedure SetDataSourceToDataControl(DataControl: TDBMemo); overload; function Connect(User_Name: string; Password: string; DataBase: string): boolean;
    function Disconnect: boolean;
    function IsConnected: boolean; property SQLConnection: TSQLConnection read FSQLConnection write FSQLConnection;
    property SQLQuery: TSQLQuery read FSQLQuery write FSQLQuery;
    property SQLTable: TSQLTable read FSQLTable write FSQLTable;
    property SQLDataSource: TDataSource read FSQLDataSource write FSQLDataSource;
    property SQLClientDataSet: TSQLClientDataSet read FSQLClientDataSet write FSQLClientDataSet;
    end;implementation//-------------------------------------------------------------------------
    // 构造函数
    constructor TDBBase.Create(AOwner: TComponent);
    begin
    inherited Create();
    //..
    FSQLConnection := TSQLConnection.Create(nil);
    FSQLQuery := TSQLQuery.Create(nil);
    FSQLTable := TSQLTable.Create(nil);
    FSQLDataSource := TDataSource.Create(nil);
    FSQLClientDataSet := TSQLClientDataSet.Create(nil); FSQLConnection.LoginPrompt := false; // 不显示登录框
    end;//-------------------------------------------------------------------------
    // 析构函数
    destructor TDBBase.Destroy;
    begin
    //..
    Disconnect;
    FSQLConnection.Free;
    FSQLQuery.Free;
    FSQLTable.Free;
    FSQLDataSource.Free;
    FSQLClientDataSet.Free; inherited Destroy;
    end;//-------------------------------------------------------------------------
    // 链接数据库
    function TDBBase.Connect(User_Name: string; Password: string; DataBase: string): boolean;
    begin
    // 已经链接
    if IsConnected=true then
    begin
    Result := true;
    exit
    end; try
    FSQLQuery.SQLConnection := FSQLConnection;
    FSQLTable.SQLConnection := FSQLConnection;
    FSQLClientDataSet.DBConnection := FSQLConnection; FSQLConnection.Close;
    FSQLConnection.ConnectionName := 'Oracle';
    FSQLConnection.DriverName := 'Oracle';
    FSQLConnection.GetDriverFunc := 'getSQLDriverORACLE';
    FSQLConnection.LibraryName := 'dbexpora.dll';
    FSQLConnection.VendorLib := 'OCI.DLL';
    FSQLConnection.Params.Values['User_Name'] := User_Name;
    FSQLConnection.Params.Values['Password'] := Password;
    FSQLConnection.Params.Values['DataBase'] := DataBase;
    FSQLConnection.Open; Result := true;
    if FSQLConnection.Connected = false then
    begin
    // 链接数据库失败
    Result := false;
    end;
    except
    Result := false;
    end;
    end;//-------------------------------------------------------------------------
    // 断开链接数据库
    function TDBBase.Disconnect: boolean;
    begin
    // 已经断开链接
    if IsConnected=false then
    begin
    Result := true;
    exit;
    end; try
    FSQLConnection.Close;
    Result := true;
    except
    Result := false;
    end;
    end;//-------------------------------------------------------------------------
    // 检查是否链接数据库
    function TDBBase.IsConnected: boolean;
    begin
    try
    if FSQLConnection.Connected=false then
    Result := false
    else
    Result := true;
    except
    Result := false;
    end;
    end;//-------------------------------------------------------------------------
    // 执行SQL语句,不返回数据集
    function TDBBase.SQLExec(SQLStrings: string): boolean;
    begin
    try
    FSQLQuery.Close;
    FSQLQuery.SQL.Text := SQLStrings;
    FSQLQuery.ExecSQL;
    Result := true;
    except
    Result := false;
    end;
    end;//-------------------------------------------------------------------------
    // 执行SQL语句,可返回数据集
    function TDBBase.SQLOpen(SQLStrings: string): boolean;
    begin
    try
    FSQLClientDataSet.Close;
    FSQLClientDataSet.CommandText := SQLStrings;
    FSQLClientDataSet.Open;
    Result := true;
    except
    Result := false;
    end;
    end;//-------------------------------------------------------------------------
    // 将返回的数据集链接到数据控件DBGrid
    procedure TDBBase.SetDataSourceToDataControl(DataControl: TDBGrid);
    begin
    DataControl.DataSource := nil;
    FSQLDataSource.DataSet := FSQLClientDataSet;
    DataControl.DataSource := FSQLDataSource;
    end;//-------------------------------------------------------------------------
    // 将返回的数据集链接到数据控件DBEdit
    procedure TDBBase.SetDataSourceToDataControl(DataControl: TDBEdit);
    begin
    DataControl.DataSource := nil;
    FSQLDataSource.DataSet := FSQLClientDataSet;
    DataControl.DataSource := FSQLDataSource;
    end;//-------------------------------------------------------------------------
    // 将返回的数据集链接到数据控件DBComboBox
    procedure TDBBase.SetDataSourceToDataControl(DataControl: TDBComboBox);
    begin
    DataControl.DataSource := nil;
    FSQLDataSource.DataSet := FSQLClientDataSet;
    DataControl.DataSource := FSQLDataSource;
    end;//-------------------------------------------------------------------------
    // 将返回的数据集链接到数据控件DBMemo
    procedure TDBBase.SetDataSourceToDataControl(DataControl: TDBMemo);
    begin
    DataControl.DataSource := nil;
    FSQLDataSource.DataSet := FSQLClientDataSet;
    DataControl.DataSource := FSQLDataSource;
    end;//-------------------------------------------------------------------------
    end.
      

  3.   

    上面的大哥我可真他妈爱死你的,你真能长篇大论,人家就是问个问题,说那么多有什么用。
    BDE这个数据库引擎开发超级超级小的程序,还是可以的。
    一般的本地数据库和分层数据库只用INTERBASE就可以了,它最好用于开发一些中小和中型数据库,大型数据库其实也是可以的。但是,开发大型数据库最好还是用Oracle和SQL比较好一些。
      

  4.   

    BlackSeptember(寂静) 哥哥明显有点激动。`
      

  5.   

    是啊,我只想听听各位用delphi开发数据库的经验。让我可以少走弯路。
    也希望能有个比较好的选择