SNF平台从sql server兼容oracle的处理方式和开发方式
2016-07-31 11:48
351 查看
前几天有这样一个需求,就是让SNF平台BS版的基础程序全面支持Oracle数据库。
初一看这是一个很大的工程,因为大家都知道 Sql和Oracle的语法有很多的不一样,如 top 、日期获取、类型之间、特殊的关键字如sqlserver中会用到 dbo.、[]号都不行、自动增长、分页查询等。所以要兼容在设计时就应该做处理。
那在SNF快速开发平台设计时就考虑了这个问题,所以我们花了3天的时间从没有Oracle数据库 现搭环境,现创建表空间、现创建表结构导数据,创建序列,甚至把原来用的C#连接oracle的dll库也升级了一下。表结构的问题用工具Navicat->数据传输功能 帮助解决的,传输过去有一个问题就是表名和字段名加上了””号,再第一次运行程序时发现了问题,统一进行了导出脚本把””去掉再执行问题。数据库升级完后我们还需要进行程序的调整,还好框架兼容和扩展性比较好,整个测试后发现 10~20处不符合需要一一进行了调整,也是满艰辛的。
经过调整后在SNF框架下开发的时候要注意以下几点:
如果需要写sql时不要用 dbo.、[]号,
还有在from后的表起别名时不要用 as 只要加空格即可。要不然Oracle不兼容。
再有就是字段和表名大小写问题,Sql server是不区分大小写的,在Oracle里会把所有全表名和字段名都变成大写的。为了bs程序页面调用时方便多数库支持时统一我们做了翻译处理。
再开发新程序时,想要利用我们的代码生成器等工具做来的话的开发步骤如下(指BS程序):
在Sql Server数据库创建表,自增主键也可以使用。表和字段要把描述写上。
使用SNF.CodeGenerator代码生成器把对应的单表或多表实体、服务层、页面等代码生成出来。拷贝到项目对应的位置,如果有个别代码可能需要调整。
把程序菜单挂上后,运行和增加个性化功能。
开发完成后,开始进行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;
如果觉得还不错,欢迎转载。
本系列文章列表如下:
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之--系统里广播的作用--迅速及时、简明扼要的把信息发送给接收者
初一看这是一个很大的工程,因为大家都知道 Sql和Oracle的语法有很多的不一样,如 top 、日期获取、类型之间、特殊的关键字如sqlserver中会用到 dbo.、[]号都不行、自动增长、分页查询等。所以要兼容在设计时就应该做处理。
那在SNF快速开发平台设计时就考虑了这个问题,所以我们花了3天的时间从没有Oracle数据库 现搭环境,现创建表空间、现创建表结构导数据,创建序列,甚至把原来用的C#连接oracle的dll库也升级了一下。表结构的问题用工具Navicat->数据传输功能 帮助解决的,传输过去有一个问题就是表名和字段名加上了””号,再第一次运行程序时发现了问题,统一进行了导出脚本把””去掉再执行问题。数据库升级完后我们还需要进行程序的调整,还好框架兼容和扩展性比较好,整个测试后发现 10~20处不符合需要一一进行了调整,也是满艰辛的。
经过调整后在SNF框架下开发的时候要注意以下几点:
如果需要写sql时不要用 dbo.、[]号,
还有在from后的表起别名时不要用 as 只要加空格即可。要不然Oracle不兼容。
再有就是字段和表名大小写问题,Sql server是不区分大小写的,在Oracle里会把所有全表名和字段名都变成大写的。为了bs程序页面调用时方便多数库支持时统一我们做了翻译处理。
再开发新程序时,想要利用我们的代码生成器等工具做来的话的开发步骤如下(指BS程序):
在Sql Server数据库创建表,自增主键也可以使用。表和字段要把描述写上。
使用SNF.CodeGenerator代码生成器把对应的单表或多表实体、服务层、页面等代码生成出来。拷贝到项目对应的位置,如果有个别代码可能需要调整。
把程序菜单挂上后,运行和增加个性化功能。
开发完成后,开始进行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.CodeRuleSNF快速开发平台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快速开发平台MVC-EasyUI3.9之-Session过期处理和页面请求筛选
- SNF快速开发平台MVC-各种级联绑定方式,演示样例程序(包含表单和表格控件)
- SNF快速开发平台MVC-EasyUI3.9之-WebApi跨域处理方案
- SNF快速开发平台--多组织+多平台+多系统处理方案
- SNF快速开发平台MVC-审核流,审核完成后会给下一个审核人发邮件,下一个审核人可以不登录系统,在邮件里进行审核处理
- SQL Server 2008与Microsoft数据平台开发
- oracle与sql server中NULL的识别方式的异同
- ASP.NET与sql server开发中DateTime型数据的处理方法
- Apache2.0.49 Jboss-3.0.8_tomcat-4.1.24 Oracle8.1.6 Apache-ant-1.6.1 j2sdk-1_4_2_04-windows-i586-p.exe构建j2ee开发平台
- DM642开发板:SSD-DM642 Ver2.0四路实时图像处理开发平台
- SQL Server 2008与Microsoft数据平台开发
- sql server与oracle的事务处理中关于DDL SQL的异同 (整理)
- OpenJWeb快速开发平台数据库设计(一)(Oracle)
- Visual C# 2008+SQL Server 2005 数据库与网络开发-- 7.3 使用ADO .NET处理数据
- 基于SQL Server 2005平台的BI 开发
- SQL Server和Oracle中事务处理的特点
- SQL Server和Oracle并行处理比较分析
- C#.Net开发基于Oracle数据库系统常见异常处理
- Jni开发时,dll文件放置的路径处理方式