多种数据库的情况

1、 DAL并不是放在一个DLL里面,而是分别放在各个的DLL里面,需要哪个数据库就使用哪个DLL文件。

2、 DAL里面的命名空间、类名、参数类型都是一样的,至少主要功能都是一样的。

3、 分页控件还没有考虑好,现在只是针对MSSQL来做的,其它的数据库还没太考虑。

4、 如果情况特殊分页控件也还是可以“分别”对待的,就是若干个数据库对应一个分页控件。另外一个数据库对应另一个分页控件。

========================= >>如果有M个业务需要有分页功能,有N种数据库需要支持,那么,你就得写M×N份代码

这个是错误的。

先说一下我的情况:

webform ,一个数据库(MSSQL)。多少个业务需要分页这个没有必要考虑。

网站写了不少了,后台管理也写了不少了,但是不管有多少个页面需要分页,都是一样的。

还是我上面写的那个

====== Page1.SqlTableNames = "SD_Product"; //表名 Page1.SqlColumns= "clo1,clo2,..."; //显示的字段 Page1.SqlPageSize = 8; //一页的记录数 Page1.SqlOrderColumn = "ProductID"; //排序字段 Page1.SqlOrderColumnKind = "int"; //排序字段类型 Page1.IsOrderDesc = true; //升序or降序 Page1.SQLQuery = "" ; //查询条件 ======

在分页控件里面可以这样组合SQL语句,

"select top " + SqlPageSize + " " + SqlColumns " from + SqlTableNames + " where " + SQLQuery + " order by  " + SqlOrderColumn + IsOrderDesc

注意: 1、这只是一个实例,实际上要判断是不是有查询条件,没有的话就不需要 加 where 了。 2、上面的是第一页的SQL语句,其他的根据你的算法来组合。 3、这里就是图上面的组成SQL语句的地方,很显然一种数据库只需要一个。

这样的方法你一万个业务也是一样的,只是一种情况,不会出现你所说的 M * 1 的情况。就是 1 个。

------------------

下面再来看看多个数据库的情况。

应该不用多说了吧,你所说得 M×N 其实就是 N 。你的数据库类型在多也不会超过20个吧。

PS: 对了分页是不需要存储过程的,只是在分页控件里面根据属性(外加分页算法)来组合SQL语句。

======================= 其实全部的组合式这样的

分页算法 * 2 * 数据库类型

一般情况 : 2 * 2 * N = s

如果n<20 的话,那么 s < 80。

分页算法 为什么会取2 呢?一个是第一页的算法,另一个是任意页的算法。当然也可以再加一个最后一页的算法。

分页算法后面的 “2” 是甚么意思呢?

分页算法可以不止一个,针对不同的情况可以使用不同的算法,简单的情况就使用高效一点的算法,复杂的情况就要适当放弃一下效率了。

最简化的情况  1 * 1 * N = N 。 有几种数据库就只有几个 “组合SQL语句”的地方。

最复杂的情况  3 * 3 * N = s = 9N。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏cmazxiaoma的架构师之路

FastDFS蛋疼的集群和负载均衡(十五)之lvs四层+Nginx七层负载均衡

17120
来自专栏Spring相关

feignClient中修改ribbon的配置

在使用@FeignClient注解的时候 是默认使用了ribbon进行客户端的负载均衡的,默认的是随机的策略,那么如果我们想要更改策略的话,需要修改消费者yml...

48510
来自专栏Kubernetes

Kubernetes如何通过Devi

Device Plugins Device Pulgins在Kubernetes 1.10中是beta特性,开始于Kubernetes 1.8,用来给第三方设备...

56880
来自专栏自由而无用的灵魂的碎碎念

启动Myeclipse报错“Failed to create the Java Virtual Machine”的解决办法

我安装的是Myeclipse 10.7.1。装上好久没用,今天启动突然报错:Failed to create the Java Virtual Machine。...

14130
来自专栏Google Dart

Flutter 构建完整应用手册-联网 顶

从大多数应用程序获取互联网上的数据是必要的。 幸运的是,Dart和Flutter为这类工作提供了工具!

14920
来自专栏Kubernetes

cluster-proportional-autoscaler源码分析及如何解决KubeDNS性能瓶颈

Author: xidianwangtao@gmail.com 工作机制 cluster-proportional-autoscaler是kubernetes的...

609100
来自专栏分布式系统进阶

Librdkafka对kafka协议的封装和Features检测

17420
来自专栏FreeBuf

腾讯御见捕获Flash 0day漏洞(CVE-2018-5002)野外攻击

腾讯御见威胁情报中心近日监控到一例使用Adobe Flash 0day漏洞(CVE-2018-5002)的APT攻击,攻击者疑通过即时聊天工具和邮箱等把恶意Ex...

12700
来自专栏安恒网络空间安全讲武堂

[CSAW CTF&#39;18] web writeup

后来才明白原来题目名就已经是hint了, 进去之后就会发现输入括号和没有括号是有差别的, 然后想起来最近的noxCTF刚刚做过一个LDAP注入

34040
来自专栏进击的程序猿

swoole入门abc1. 入门abc

分析上面的代码,我们发现会有什么问题?如果两个请求同时进来,都读到了lastTime,没有被拒绝,但是这两个请求本身是已经请求过快了。

10320

扫码关注云+社区

领取腾讯云代金券