zoukankan      html  css  js  c++  java
  • 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.
  • 相关阅读:
    新的工作开始
    昨日的世界
    【Drools-开源业务规则引擎】入门实例(含源码)
    【cs229-Lecture7】支持向量机(SVM)
    【2014年12月6日】HR交流会
    【cs229-Lecture5】生成学习算法:1)高斯判别分析(GDA);2)朴素贝叶斯(NB)
    【图算法】Dijkstra算法及变形
    【图算法】综述
    【云迁移论文笔记】A Comparison of On-premise to Cloud Migration Approaches
    【云迁移论文笔记】Cloud Migration Research:A Systematic Review
  • 原文地址:https://www.cnblogs.com/jijm123/p/10359324.html
Copyright © 2011-2022 走看看