在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本论文主要是通过三天来讲解三层的结构,今天是第一天,先讲解一下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.
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论