通用数据库访问的接口定义和一个实现

时间:2010-01-29 08:56:12  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:口定义部分和一个利用TDataModule的常用实现。{            单元名称=untDbRoutine       &...
  正文:定义一个接口IDBDealer,专门访问数据库。应用程序通过该接口处理所有数据库访问。
优点:
  格式化规范化代码
  共享代码,
  易维护。
  极易在2层和多层架构中间切换。
下面是接口定义部分和一个利用TDataModule的常用实现。


{
           单元名称=untDbRoutine
           作者=程龙华,
           日期=2004-10-21
           作用:常用对数据库的操作,主要的对于TClientDataset的操作,本单元函数多数
           会访问数据库。不需要访问数据库的TClientDataset操作函数一般在untCommon单元里。
           注意事项:在调用本单元函数前需要提供一个实现了IDBDealer接口的对象,该对象处理
                     与具体数据库的读写。
}

unit untDbRoutine;

interface
uses controls,Variants,SysUtils,DBClient,
db,Forms,Windows,classes,ActnList,adodb,iniFiles,strUtils,StdCtrls,DateUtils,
untCommon;

type IDbDealer=interface
['{D7C18F18-AB65-48FE-8BA6-52B382838555}']
procedure OpenCDS(aSql:string;ACDS:TClientDataset);
function SaveCdsData(aCDS:TClientDataset):boolean;
function SaveCdsPartial(aCDS:TClientDataset;TableName:string):boolean;
function ExecuteSQL(aSql:string):boolean;
end;

procedure SetDBDealer(aDBDealer:IDbDealer);
procedure OpenCDS(aSql:string;ACDS:TClientDataset);
function SaveCdsData(aCDS:TClientDataset):boolean;
function SaveCdsPartial(aCDS:TClientDataset;TableName:string):boolean;
function ExecuteSQL(aSql:string):boolean;

var      
DBDealer:IDbDealer;
tempCDS:TClientDataset;
implementation

procedure SetDBDealer(aDBDealer:IDbDealer);
begin
  DBDealer:=aDBDealer;
end;

procedure OpenCDS(aSql:string;ACDS:TClientDataset);
begin
  DbDealer.OpenCDS(aSql,ACDS);
end;

function SaveCdsData(aCDS:TClientDataset):boolean;
begin
  result:=DbDealer.SaveCdsData(aCDS);
end;



initialization
tempCDS:=TClientDataset.Create(nil);
finalization
tempCDS.free;

end.

第二部分:一个实现
unit untDM;

interface

uses
SysUtils,Forms, Classes, ADODB, Provider, DB, Variants, dxDBCtrl, dxDBTL, dxDBTLCl,
dxEdLib, dxDBELib, Controls, dxTL, DBClient, math, Windows,untDBRoutine,untCommon;

type
TDM = class(TDataModule,IDbDealer)
ADOConnection: TADOConnection;
ADOCmd: TADOCommand;
ADODS: TADODataSet;
DSP: TDataSetProvider;
cds_temp: TClientDataSet;
ADOQuery1: TADOQuery;
procedure DSPBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);

procedure DataModuleCreate(Sender: TObject);
procedure DSPUpdateError(Sender: TObject;
DataSet: TCustomClientDataSet; E: EUpdateError;
UpdateKind: TUpdateKind; var Response: TResolverResponse);
procedure DSPUpdateData(Sender: TObject;
DataSet: TCustomClientDataSet);
procedure DSPGetTableName(Sender: TObject; DataSet: TDataSet;
var TableName: String);
procedure DataModuleDestroy(Sender: TObject);
private
{ Private declarations }
sERRSTR:widestring; //系统内部用
    ovDATA :OleVariant; //系统内部用

_sUptErr:string;
_flagPartialSave:boolean;
_Fields:TStrings;
_TableName:string;
procedure GetData(const strSQL: Widestring; var strError: Widestring; var vData: OleVariant);
procedure ModifyData(const strSQL: Widestring; var strError: Widestring);
procedure SaveData(const strSQL: Widestring; var strError: Widestring; vData: OleVariant);
public

通用数据库访问的接口定义和一个实现》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/12579.html

 1/5    1 2 3 4 5 下一页 尾页


关键字:

关于《通用数据库访问的接口定义和一个实现》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td