请各位实际使用过的大侠给个意见
bde太老了,好像没有必要考虑了
ado比较通用,dbexpress最新的通用接口,
还是选择针对数据库的专用控件,比如oracle的oda,interbase的ibx
我平时使用最多的是sybase,oracle,sql server还有做那种单据风格的录入界面,各位是用ExpressQuantumGrid或者infopower,还是ehlib
或其他什么
bde太老了,好像没有必要考虑了
ado比较通用,dbexpress最新的通用接口,
还是选择针对数据库的专用控件,比如oracle的oda,interbase的ibx
我平时使用最多的是sybase,oracle,sql server还有做那种单据风格的录入界面,各位是用ExpressQuantumGrid或者infopower,还是ehlib
或其他什么
解决方案 »
- 既有32位也有64位系统的delphi软件怎么升级啊
- D2010使用 VclSkin V5.4 for D7-D2010 FullSource 问题~
- 请帮我解决一下这个SQL问题?
- 高手指点----delphi 如何实现整型到实型的类型转化????
- 急急!!在线等待!!水晶报表中如何按每5条记录自动分组阿??????小弟穷阿。。帮帮忙阿
- 难题!!!搜索十个access数据库中的所有文本或备注类型的字段,看其中是否有"主题"两字.....
- 求助:如何发送自定义消息类型?
- ISAPI生成的DLL在IIS中如何获得自身的绝对路径?
- 为什么用代理上MSN messenger老是掉线,而且断了之后会自动连接
- 一个Query的奇怪问题
- 请问wwdbgrid这控件,点击title排序就根据选中的字段排序(升序,降序)
- 最后100分了:问三个简单问题,搜索半天结果都不尽如人意。
// 文件名: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.
BDE这个数据库引擎开发超级超级小的程序,还是可以的。
一般的本地数据库和分层数据库只用INTERBASE就可以了,它最好用于开发一些中小和中型数据库,大型数据库其实也是可以的。但是,开发大型数据库最好还是用Oracle和SQL比较好一些。
也希望能有个比较好的选择