• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

delphi(假三层之数据访问层)(第一天)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
本论文主要是通过三天来讲解三层的结构,今天是第一天,先讲解一下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.

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
XEDelphi判断字符为中文的方法发布时间:2022-07-18
下一篇:
MATLAB数字图像处理(二)图像增强发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap