本论文主要是通过三天来讲解三层的结构,今天是第一天,先讲解一下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.

delphi(假三层之数据访问层)(第一天)的更多相关文章

  1. 企业级应用架构(三)三层架构之数据访问层的改进以及测试DOM的发布

    在上一篇我们在宏观概要上对DAL层进行了封装与抽象.我们的目的主要有两个:第一,解除BLL层对DAL层的依赖,这一点我们通过定义接口做到了:第二,使我们的DAL层能够支持一切数据访问技术,如Ado.n ...

  2. 数据访问层的改进以及测试DOM的发布

    数据访问层的改进以及测试DOM的发布 在上一篇我们在宏观概要上对DAL层进行了封装与抽象.我们的目的主要有两个:第一,解除BLL层对DAL层的依赖,这一点我们通过定义接口做到了:第二,使我们的DAL层 ...

  3. ClownFish:比手写代码还快的通用数据访问层

    http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...

  4. 使用JDBC构建简单的数据访问层

    本教程的目的是使用Java编写的分离的层去访问数据库中的表,这一层通常称为数据访问层(DAL) 使用DAL的最大好处是通过直接使用一些类似insert()和find()的方法简化了数据库的访问操作,而 ...

  5. NHibernate:教你如何搭建数据访问层?

    NHibernate:教你如何搭建数据访问层? 什么是NHibernate NHibernate 是一个基于.net 的针对关系型数据库的对象持久化类库.NHibernate 来源于非常优秀的基于Ja ...

  6. view是视图层+action是控制层+service是业务层+dao是数据访问层。

  7. 《大型网站系统与JAVA中间件实践》读书笔记-数据访问层

    数据访问层 5.1.2数据库垂直/水平拆分的困难 随着网站业务的快速发展,数据量和访问量不断上升,数据库的压力越来越大. 更换更好的硬件(Scale Up)是一种解决方案,而且在我们能付得起硬件费用并 ...

  8. 【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)

    开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类, ...

  9. 数据访问层的接口IBaseDAL

    using System; using System.Collections; using System.Data; using System.Data.Common; using System.Co ...

随机推荐

  1. Spring MVC的Rest URL 被错误解析成jsp, 导致404错误(XML方式下@Controller和@RestController需要配置<mvc:annotation-driving/>)

    问题: 最近在原有MVC的WEB应用中添加一个REST服务,结果始终报404错误.把 Spring debug 日志打开,发现处理REST请求的Controller已经正确进入 [org.spring ...

  2. vue复习(二)

    一.组件介绍 每一个组件都是一个vue实例 每个组件均具有自身的模板template,根组件的模板就是挂载点 每个组件模板只能拥有一个根标签 子组件的数据具有作用域,以达到组件的复用 二.局部组件 & ...

  3. 使用CDN后配置nginx自定义日志获取访问用户的真实IP

    问题描述:         新上线了一个项目,架构如下(简单画的理解就好): 问题是:负载前面加上CDN后负载这里无法获取客户的真实访问IP,只能过去到CDN的IP地址: 问题解决: 修改nginx日 ...

  4. golang安装开发环境配置

    本机系统:fedora28 step 1 百度搜索 golang 到 go 语言中文网,下载 golang 包,如果是 linux 系统可以直接点击此连接,也可去 go 语言中文网, https:// ...

  5. [codeForce-1006C]-Three Parts of the Array (简单题)

    You are given an array d1,d2,…,dnd1,d2,…,dn consisting of nn integer numbers. Your task is to split ...

  6. CentOS 7 Docker基本特性

    Docker是一个开源的应用容器引擎,开发人员可以非常容易地打包已经开发好的应用,同时将应用相关的依赖包也打包到这样一个可移植的容器中,然后发布到任意的Linux主机系统上.Docker是基于Linu ...

  7. hive对于lzo文件处理异常Caused by: java.io.IOException: Compressed length 842086665 exceeds max block size 67108864 (probably corrupt file)

    hive查询lzo数据格式文件的表时,抛 Caused by: java.io.IOException: Compressed length 842086665 exceeds max block s ...

  8. 【转】git乱码解决方案汇总

    git乱码解决方案汇 2012-11-04更新:官方的“终极”解决方案:msysGit1.7.10开始使用UTF-8编码保存文件名. 2011-10-24更新: 从一篇链接到本篇文章的文章(我对这篇文 ...

  9. git 查看对比分支commit命令笔记

    git log  newheader(branch1) ^release(branch2) -- branch1 上比branch2多的commit 注意brnach2后面要--

  10. Beta发布 _thunder_文案+美工展示

    作业要求:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/1366 团队介绍:thunder 组成员及各位博客地址: 1.王航:htt ...