delphi,假三层之数据访问层

本论文主要是通过三天来讲解三层的结构,今天是第一天,先讲解一下delphi下的Models层,我主要封装了两个查询得到数据集的函数,主要是通过在表示层上创建的数数据集控件传递进来,通过业务逻辑对语句的处理进行操作数据集,最后提交数据集的数据到数据库中去,进而想成delphi中的假三层,这样做能够独立于业务逻辑层和数据访问层,其他的都可以调用这两层,其中业务逻辑层,明天再讲,逻辑层写的不怎么好,个人觉得还是数据访问层封装方法封装通用性程度高一点。例如:TADOQuery,TADOTable数据集控件,通过一层一层的传递。

下面直接上代码:

unit UnitModels;

interface

uses

SysUtils, Classes, DB, ADODB;

type

TModel = class(TDataModule)

conConnection: TADOConnection;

procedure DataModuleCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

FConnection : TADOConnection;

// 返回影响的行数

function SqlExec(const ASql: string;var AQry: TADOQuery): Integer;

// 执行sql返回数据集

function SqlQuery(const ASql: string; var AQry: TADOQuery): Boolean;

overload;

end;

var

Model: TModel;

implementation

{$R *.dfm}

//以下语句主要是sql server数据库的驱动写法,其他连接不同数据库语法,自己查询一下。

procedure TModel.DataModuleCreate(Sender: TObject);

begin

conConnection.ConnectionString := 'Provider=SQLOLEDB.1;Integrated

Security=SSPI;Persist Security Info=False;Initial Catalog=数据库名字;Data

Source=服务器名';

conConnection.LoginPrompt := false;

conConnection.Connected := true;

FConnection := conConnection;

end;

function TModel.SqlExec(const ASql: string;

var AQry: TADOQuery): Integer;

begin

Result := -1;

AQry.Close;

AQry.Connection := FConnection;

AQry.SQL.Text := ASql;

try

try

begin

AQry.ExecSQL;

Result := 1;

end;

except on e: Exception do

begin

AQry.Cancel;

AQry.Close;

Exit;

end;

end;

except on e: Exception do

;

end;

end;

function TModel.SqlQuery(const ASql: string;

var AQry: TADOQuery): Boolean;

begin

Result := False;

AQry.Close;

AQry.Connection := FConnection;

AQry.SQL.Text := ASql;

try

try

begin

AQry.Open;

Result := True;

end;

except on e: Exception do

begin

AQry.Cancel;

AQry.Close;

Exit;

end;

end;

except on e: Exception do

;

end;

end;

end.