多种数据库的情况

 

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。

时间: 2024-09-27 09:08:58

多种数据库的情况的相关文章

通过“访问多种数据库”的代码来学习多态!(.net2.0版)

本帖子针对初学者,如果您是老鸟可以略过. 语言环境: asp.net2.0 .数据库没什么了,反正是要到达访问多种数据库的目的,但是语言一定是.net2.0.因为有几个地方.net1.1是不支持的. 目的:使用ADO.net访问多种数据库. 对于一个网站来说,访问数据库可以说是一个很基本的功能了,那么怎么实现这个功能呢? 假设我们要从数据库里读取News表里面的记录,那么常见的代码也许是这样的.   sql的访问方法 1public class DALSQL 2    { 3        pu

Winform开发框架中实现同时兼容多种数据库类型处理

在很多应用系统里面,虽然一般采用一种数据库运行,但是由于各种情况的需要,可能业务系统会部署在不同类型的数据库上,如果开发的系统能够很方便支持多种数据库的切换,那可以为我们减少很多烦恼,同时提高系统的适应性和强壮型.还有一种情况,由于业务数据库的不断膨胀或者方便数据库的切割隔离,有时候也会把不同的业务数据库进行分拆,如权限提供数据库,客户关系管理数据库,工作流程数据库,企业营运数据库等等,因此在一个系统里面,同时使用2个或者以上的数据库的情况也是有的. 在我较早期的一篇随笔<Winform开发框架

Winform开发框架中实现多种数据库类型切换以及分拆数据库的支持

在很多应用系统里面,虽然一般采用一种数据库运行,但是由于各种情况的需要,可能业务系统会部署在不同类型的数据库上,如果开发的系统能够很方便支持多种数据库的切换,那可以为我们减少很多烦恼,同时提高系统的适应性和强壮型.还有一种情况,由于业务数据库的不断膨胀或者方便数据库的切割隔离,有时候也会把不同的业务数据库进行分拆,如权限提供数据库,客户关系管理数据库,工作流程数据库,企业营运数据库等等,因此在一个系统里面,同时使用2个或者以上的数据库的情况也是有的.针对这两种情况,本文介绍在我的Winform开

SPL3.0正式发布!支持多种数据库访问哦

访问|数据|数据库 SPL 3.0正式发布,升级说明 经过一段时间的修改,SPL终于升到3.0了,之所要升到3.0,主要是因为增加了两种连接方式:ODP.NET与ODBC ODP.NET极大了增强了SPL对Oracle数据库的访问能力,目前使用ODP.NET连接Oracle是最佳的选择,相关的文章可以在网上找一下,蛮多的. ODBC是.NET Framework1.1新增的功能,可以对其他类型的数据库采用ODBC的连接方式. 因此上面两种连接方式的增强,使SPL可以更强的支持多种数据库. SPL

DB2 ESE 9.1在Windows Server 2008下出现无法新建数据库的情况及解决办法

DB2 Enterprise Server Edition(DB2 ESE)9.1在Windows Server 2008 下出现无法新建数据库的情况及解决办法 在安装有,DB2 9.1版本的Windows Server 2008 上面,使用默认的安装方式导致无法创建数据库,相关的错误提示: "SQL3012C 发生系统错误(原因码= "").无法处理后续的SQL 语句.SQLSTATE=58005". 通过分析日志"%programfiles%\IBM\

link环境下制作一款《订餐软件》,如何在单数据库的情况下实现账套数据的合并和反合并?

问题描述 link环境下制作一款<订餐软件>,如何在单数据库的情况下实现账套数据的合并和反合并? link环境下制作一款<订餐软件>,如何在单数据库的情况下实现账套数据的合并和反合并? 解决方案 合并可以使用join结合查询,反合并你需要记录合并之前的数据,这样才可以还原.

link环境下制作一款《订餐软件》,请问数据库异常情况下,如何整理?

问题描述 link环境下制作一款<订餐软件>,请问数据库异常情况下,如何整理? link环境下制作一款<订餐软件>,请问数据库异常情况下,如何整理? 解决方案 http://zhidao.baidu.com/link?url=HtaLllUY3WZjOsuA0-pQvHQN_jpm0YfCFeuyXT7RlZDClxRp1408nmi_GZS0vdfStpqOHOvh5mzswgoxp6EOCa 解决方案二: 一般数据库有简单的异常恢复机制 也可以采用双备份的机制来防止/处理数据库

窗体-在不使用数据库的情况下,如何使用c#的winform ,将Excel导入到datagridview中

问题描述 在不使用数据库的情况下,如何使用c#的winform ,将Excel导入到datagridview中 小弟有个问题求教一下,如何将excel 文件放到VS的剪贴板中,再利用代码读取存储在剪贴板上的数据将其显示在winform的DataGridView中? 解决方案 C#操作EXCEL全解(代码) 提示:运行之前必须先引用Interop.Excel.dll模块 using System; using System.Collections.Generic; using System.Tex

关于MySQL数据库漏洞情况的通报

本文讲的是 关于MySQL数据库漏洞情况的通报,近日,互联网上披露了关于MySQL数据库存在代码执行漏洞(CNNVD-201609-183)的情况.由于MySQL数据库默认配置存在一定缺陷,导致攻击者可利用该漏洞对数据库配置文件进行篡改,进而以管理员权限执行任意代码,远程控制受影响服务器.目前,Oracle官方网站发布声明将于10月发布关键补丁更新信息. 一.漏洞简介 Oracle MySQL是美国甲骨文(Oracle)公司的一套开源的关系数据库管理系统. MySQL数据库中的配置文件(my.c