数据层应该分为两个部分,这样可以更好的“分工”,各自研究自己的功能

 

     数据层应该分为两个部分(并不是说一定要变成两层)第一个部分是处理SQL语句,包括存储过程的名称,存储过程的参数(一下的SQL语句都包含存储过程名称和存储过程的参数);第二部分是传递SQL语句的

     我们先说第二部分,这个最典型的就是SQLhelp。他的职责就是接收SQL语句,然后通过ADO.net传递给数据库,如果是select语句的话,需要返回记录集,记录可以放在DataTable里面,也可以用DataReader。但是放不放在实体类里面不是第二个部分的职责。

     有一些tx(包括我在内)会写自己的help,自己写的自己用这舒服嘛,基本功能大概也就是我上面说的这些。

     这个部分还以一个职责,那就是要支持多种数据库!不过这个也不难,在ADO.net2.0的支持下,也是很简单的。

     第一部分就是处理SQL语句的部分,比如我要添加一条新闻,那么就要有这样一条类似的语句

“insert into News (NewsTitle,NewsContent) values (@NewsTitle,@NewsContent) ”。

     那么这样的sql语句是如何获得的呢?这个就是第二部分要处理的事情。

     这里的变化就有很多了。可以自己手写,可以拼接,可以使用LinQ 、Hibernate等,当然有些也直接把第二部分包含进去了。

     相信有好多人就是这么做的,但是也会有些人把这两个部分完全混合在一起了。LinQ 、Hibernate这一类的不知道内部是如何处理的,相信也会由一个明确的区分吧。

     分成两个部分的好处就是可以进一步的“优化”(这个词不太准确,没想到太好的词语)。第二部分很容易就做成通用的,这样就大大的减少了代码量,和发开时间,出现bug的概率也会大大降低。

     第一部分就可以只考虑如何处理SQL语句了,比如不同的数据库的情况下,如何写sql语句。比如在添加、修改的情况下如何处理sql语句,insert into ...... 是不是所有的数据库都支持。尽量让一种sql语句可以“适合”多种数据库。

     如果都支持的话,那么添加数据的情况我是不是只需要写一种SQL语句就可以了,一种SQL语句就可以应对多种数据库。因为这样的话,添加数据的部分我就不必要先定义一个接口,然后在SQL Server 实现一遍接口,Orcale再实现一遍接口,Access再实现一遍接口了。sql语句都是一样的呀(对于添加来说都是insert into ),这样代码量就有节省了一大块。

     同理,修改数据(Update)、删除数据(delete)是不是也可以同样处理呢?

     剩下来的就是最麻烦的分页了。其实这个也简单,快上班了,先不写了。

     对了,还有一些地方,统计报表了、导出数据了、其他一时没先到的地方,这些是不是都可以使用类似的思路来处理一下呢?如果可行的话,那么代码量会减少70%(和petshop相比)。

 

 

 

时间: 2024-10-03 07:32:58

数据层应该分为两个部分,这样可以更好的“分工”,各自研究自己的功能的相关文章

编程-10个随机数,需要分为两组,每组分别5个数,要求两个组的和值最接近

问题描述 10个随机数,需要分为两组,每组分别5个数,要求两个组的和值最接近 比如一个数组10个随机数,需要分为两个数组,每个数组5个数,要求两个数组的和值最接近,怎么编程? 解决方案 动态规划 http://my.oschina.net/wizardpisces/blog/114538 解决方案二: 先排序,然后最小值与最大值搭配,就像从1到99求和一样 解决方案三: 1.先产生10个随机数.2.5层循环生成第一组组合,剩下的是另一组.3.循环生中,比较二组和之差,记录下来(二组结合和差).每

CYQ.Data 轻量数据层之路 应用示例一 留言版(四)

继上篇:CYQ.Data 轻量数据层之路 继续狂热升级(三)之后,本篇要进入应用示例介绍使用了:   为了使一篇文章就能介绍完整个示例,我选用了简单的:登陆+注册+留言版本功能,来一步一步介绍如何使用的: 当前环境是:VS2005+SQL2005   从数据库说起吧,我们创建一个新的数据库,起名叫:Message 接着新建两个表:Users+Message,上图: 为避免本篇节过长,本示例只选用最关键的字段了,大伙可以根据上面的图自己创建数据库与表. 接着我们新建网站来示例[这里没选择新建应用程

定制数据层

数据 定制数据层 关键字:数据层,访问,元数据,数据访问模型 撰写:●⌒●┒ tyt@sohu.com 引用请注明出处 时间:2003年8月 摘要:在一个分层的系统中,数据层承担的任务是为系统提供需要的数据.在承上启下的过程中,系统的变更,尤其是系统数据要求的变更会让数据层忙的不亦乐乎.为此在痛苦的变更之后,我选择了数据访问模型,将元数据引入到数据层.使之有极强的扩展能力,变更能力.本文就将介绍一个基本无需编程的数据层. 如果您使用的是小系统或已经决定使用快速绑定数据库表.本文可能对您不太合适.

ASP.NET应用技巧:AspNetForums的数据层概述

asp.net|技巧|数据     今天用了一个多小时的时间学习ANF的DAL,感觉自己的对ANF有了进一步的了解,随之也产生的疑问,在些点发表一点自己的体会. using 本人很菜 (1)DAL(数据层)类组成:      ANF的数据层主要是ForumsDataProvider(简称:FDP)和SqlDataProvider(简称:SDP),以下的"FDP"及"SDP"指代上述名称. (2)DAL(数据层)类关系:     ForumsDataProvider和

【J2EE十三个规范】数据层之JDBC

[学习概要]     在上篇博客中,介绍了两个Web层的规范,本篇博客,继续J2EE十三个规范的学习,下面要介绍的便是数据层的JDBC. [学习笔记]     一.什么是JDBC     JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.     二.JDBC的优势     1.有了JDBC API,就不必为Sybase数据库专门写一个程序,

Swift教程_零基础学习Swift完整实例(五)_swift完整实例(构建数据层)

3.构建数据层 按照官方sample,我们使用简单的plist来保存数据(当然使用内置数据库也ok).该plist既是我们列表中需要显示的内容. 1.将化学元素的数据整理为Elements.plist,该plist的结构为Array<Dictionary>(Java表示为ArrayList<Map<String,Object>>). dictionary中包含若干键值对,但一定要保证每个dictionary键值对的键和值的类型一致,这样我们才能够进行数据的解析.如图.

CYQ.Data 轻量数据层之路 抢先体验版本功能说明演示 (二十九)

本系列所有文章索引:CYQ.Data 轻量数据层之路 框架开源系列 索引 本系列所有相关下载:CYQ.Data 轻量数据层之路 bug反馈.优化建议.最新框架下载 前言:   一直都是发布版本才写文章,这次为抢先体验版本[V2.5]做一下简单的功能介绍   以下进行功能更新说明[相比V2.0版本]: 1:修正DebugInfo属性在异常发生时无法取得操作语句的问题 2:MAction增加Bind方法可以轻松绑定DropDownList等控件 3:MDataTable增加ToList<T>泛型方

CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]

前言: 继上一版本:CYQ.Data 轻量数据层之路 V4.3 版本发布[增加对SQLite,MySQL数据库的支持] ,至今已快近3个月了,中间仅有V4.5beta版本供下载,却没正式发布,今天,终于要把V4.5给发布了.   下面看一下新版本的修改记录 实用: 1:MAction:Select方法增加重载:Select(string where); 2:FormatWhere处理了"Parent is null"的"is"关键字;处理"order by

怎么将Reapter显示的新闻分为两列 3行两列的形式

问题描述 怎么将Reapter显示的新闻分为两列3行两列的形式如:从数据库当中查询出6条记录,在Reapter控件中显示原先的:新闻1新闻2新闻3新闻4新闻5新闻6后来的:新闻1新闻2新闻3新闻4新闻5新闻6在线等!!!高手帮帮忙!!! 解决方案 解决方案二:在模板里面自己先<table><tr><td></td></tr></table>完成就可以了解决方案三:你写好布局,布局一个横排的样式.然后去reapter里面循环就可以啊解决