前几天有这样一个需求,就是让SNF平台BS版的基础程序全面支持Oracle数据库。

初一看这是一个很大的工程,因为大家都知道 Sql和Oracle的语法有很多的不一样,如 top 、日期获取、类型之间、特殊的关键字如sqlserver中会用到 dbo.、[]号都不行、自动增长、分页查询等。所以要兼容在设计时就应该做处理。

那在SNF快速开发平台设计时就考虑了这个问题,所以我们花了3天的时间从没有Oracle数据库 现搭环境,现创建表空间、现创建表结构导数据,创建序列,甚至把原来用的C#连接oracle的dll库也升级了一下。表结构的问题用工具Navicat->数据传输功能 帮助解决的,传输过去有一个问题就是表名和字段名加上了””号,再第一次运行程序时发现了问题,统一进行了导出脚本把””去掉再执行问题。数据库升级完后我们还需要进行程序的调整,还好框架兼容和扩展性比较好,整个测试后发现 10~20处不符合需要一一进行了调整,也是满艰辛的。

经过调整后在SNF框架下开发的时候要注意以下几点:

  1. 如果需要写sql时不要用 dbo.、[]号,
  2. 还有在from后的表起别名时不要用 as 只要加空格即可。要不然Oracle不兼容。
  3. 再有就是字段和表名大小写问题,Sql server是不区分大小写的,在Oracle里会把所有全表名和字段名都变成大写的。为了bs程序页面调用时方便多数库支持时统一我们做了翻译处理。

再开发新程序时,想要利用我们的代码生成器等工具做来的话的开发步骤如下(指BS程序):

  1. 在Sql Server数据库创建表,自增主键也可以使用。表和字段要把描述写上。
  2. 使用SNF.CodeGenerator代码生成器把对应的单表或多表实体、服务层、页面等代码生成出来。拷贝到项目对应的位置,如果有个别代码可能需要调整。
  3. 把程序菜单挂上后,运行和增加个性化功能。
  4. 开发完成后,开始进行Oracle的移送。

a)         采用Navicat->数据传输功能把表结构复制过去,再Navicat里把表结构导出去掉””号,再创建表结构。也把对应的默认值也处理一下。

b)         如果是自增长的话需要创建一个序列号,序列号名为“seq_表名”。这样生成的代码就可以兼容。

c)         还需要向BaseTranslation表增加字段翻译,用于翻译Oracle大写字段和Sql server Pascal大小写字段名的问题。DataTable是不区分大小写的不用管。但在页面绑定字段和js取值等地都会有用。为了一次开发多数据库支持我们需要处理。

注:翻译后页面使用的是Pascal大小写字段名。如:Id、ParentId、SortCode等。

下面SQL脚本,作用是检索出来所有表字段和Pascal大小写和全大写字段名称。放到翻译表。

Insert into BaseTranslation

select distinct [name], upper([name] ) from [syscolumns] where [id] in(

select [id] from [sysobjects] where [type] = 'u'

)

union

select distinct [name], upper([name] ) from WorkFlowV30. dbo.[syscolumns] where [id] in(

select [id] from WorkFlowV30.dbo .[sysobjects] where [type] = 'u'

)

union

select distinct [name], upper([name] ) from ProjectV30. dbo.[syscolumns] where [id] in(

select [id] from ProjectV30.dbo .[sysobjects] where [type] = 'u'

)

select * from BaseTranslation

再附赠一个Oracle备份和还原脚本:

exp SYSTEM/orcl@192.168.2.50:1521/orcl file=d:\snf_oracle.dmp;

exp platform/platform@192.168.2.50:1521/orcl file=d:\snf_oracle_platform.dmp;

作者: 王春天 2015-11-23
作者Blog:http://www.cnblogs.com/spring_wang

如果觉得还不错,欢迎转载。

本系列文章列表如下:

基于SNF-快速开发平台框架的系列文章:

SNF快速开发平台3.2之--.Net可扩展的单据编号生成器-SNF.CodeRule

SNF快速开发平台3.1之--审核流(3)低调奢华,简单不凡,实例演示-SNF.WorkFlow

SNF快速开发平台3.1之--审核流(2)流程设计-SNF.WorkFlow功能使用说明

SNF快速开发平台3.1之--审核流(1)SNF.WorkFlow审核流简介

SNF快速开发平台3.0之--完美的代码生成器SNF.CodeGenerator-快速开发者的利器

基于MVC4+EasyUI的Web开发框架--Spring.Net.FrameworkV3.0总体介绍

SNF快速开发平台3.0之--MVC 打印解决方案

SNF快速开发平台3.0之--文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)

SNF快速开发平台3.0之--asp.net mvc4 强大的导出和不需要上传文件的批量导入EXCEL

SNF快速开发平台3.0之MVC通用控件库展示-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout

SNF快速开发平台3.0之BS页面展示和九大优点-部分页面显示效果-Asp.net+MVC4.0+WebAPI+EasyUI +Knockout

SNF快速开发平台3.0之-界面个性化配置+10种皮肤+7种菜单-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout

SNF快速开发平台3.0之-CS页面-Asp.net+Spring.Net.Framework

SNF快速开发平台3.0之--系统里广播的作用--迅速及时、简明扼要的把信息发送给接收者

SNF平台从sql server兼容oracle的处理方式和开发方式的更多相关文章

  1. SQL Server,MySQL,Oracle三者的区别

    SQL Server,MySQL,Oracle三者的区别 2016-10-14 转自:SQL Server,MySQL,Oracle三者的区别 目录 1 Oracle.Sql Server.MySql ...

  2. SQL server 与Oracle开发比较

    ●概念上区别 1.Oracle 是一种对象关系数据库管理系统(ORDBMS),而Sql server 只是关系型数据库管 理系统(RDBMS). 2.Oracle使用Internet文件系统,该系统基 ...

  3. 【转】SQL Server与Oracle的区别

    转自:http://soft.chinabyte.com/database/255/12258255.shtml SQL Server与Oracle的区别 2012-02-10 00:00 中国IT实 ...

  4. 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

    使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...

  5. 数据库 --> SQL Server 和 Oracle 以及 MySQL 区别

    SQL Server 和 Oracle 以及 MySQL 区别 三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性.排行第四的DB2(属IBM公司),与Oracle的定位和架构非 ...

  6. Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决

    Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...

  7. 关于sql server远程访问Oracle数据库 OpenQuery查询返回多条数据的问题

    在Sql Server远程访问Oracle 中的数据库表时: 远程语法通常为: select * from OpenQuery(Oracle链接服务器名称,‘查询语句’) eg: select * f ...

  8. Win7 64位下sql server链接oracle的方法

    继上一次mysql同步sql server后,这一次需要将Oracle同步到sql server上来,方案相似,只是在sql server链接oracle的时候费了很多时间. 一.测试环境 本方案实现 ...

  9. sql server 向oracle导入表

    选择相应的数据库,右键,任务,选择导出数据 点击下一步 选择Microsoft OLE DB Provider for Sql Server 选择下一步 目标选择.net Framework data ...

随机推荐

  1. HDS推出HUS中端阵列 文件、块和对象统一存储

    http://storage.chinabyte.com/86/12320086.shtml http://storage.chinabyte.com/134/12324134.shtml 日立数据系 ...

  2. VMware的存储野心(下):虚拟卷和闪存缓存

    http://storage.chinabyte.com/187/12494187_2.shtml 在上一篇<VMware的存储野心(上):软件定义.分布式DAS支持>中,我们分别讨论了& ...

  3. 012-Go ORM框架之Gorm测试

    1:参考:https://github.com/jinzhu/gorm 2:数据库脚本(pg) -- create table posts( id serial primary key, conten ...

  4. SQL与SQL Server

    SQL--关系数据库的国际标准语言. SQL Server--著名的数据库管理系统.其他著名的数据库管理系统还有Oracle.Sybase等,它们都实现了SQL语言.   在SQL中,完成所有核心功能 ...

  5. C++ 推断一棵二叉树是否对称

    一棵二叉树对称,就是说它假设以根为轴,翻转过去一样.例如以下图所看到的,以虚线为轴.把左边翻转到右边,各顶点及顶点中的值一一相应. watermark/2/text/aHR0cDovL2Jsb2cuY ...

  6. 8个很实用的在线工具来提高你的Web设计和开发能力

    近期在网上看到一张帖子感觉不错.只是是英文版的今天闲着没事锻炼一下英语能力分享给大家看看! 原文地址:http://webdesignledger.com/tools/8-useful-online- ...

  7. 通过淘宝接口免费获取IP地址信息

    1.获取互联网访问IP信息 一般获取互联网访问的IP的相关信息一般都是收费接口,免费的接口不多,我使用到一个接口如下: http://ip.taobao.com/service/getIpInfo.p ...

  8. Python学习笔记二:函数式编程

    1:Python中,内置函数名相当于一个变量,指向内置函数.所以可以通过函数名调用相应函数,也可以给函数名赋值,改变它的内容,如:可以把另一个函数变量赋值给它,那它就指向了所赋值的函数了. 2:高级函 ...

  9. Java多线程之锁优化策略

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561264.html  锁的优化策略 编码过程中可采取的锁优化的思路有以下几种: 1:减少锁持有时间 例如:对 ...

  10. cocos2d-js 免安装在线版 粒子编辑器 particle editor particle builder 兼容pex和plist

    http://onebyonedesign.com/flash/particleeditor/ 这个原来是为flash starling设计的粒子系统编辑器,但实际上,还是能兼容cocos2d的. 只 ...