SNF平台從sql server相容oracle的處理方式和開發方式

來源:互聯網
上載者:User

標籤:

前幾天有這樣一個需求,就是讓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/[email protected]:1521/orcl file=d:\snf_oracle.dmp;

 

exp platform/[email protected]: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的處理方式和開發方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.