OracleHelper


『片段』OracleHelper (支持 多條SQL語句)

C# 調用 Oracle 是如此尷尬

>System.Data.OracleClient.dll —— .Net 自帶的 已經 過時作廢。

>要鏈接 Oracle 服務器,必須在 本機安裝 Oracle 客戶端 —— 而 SQLServer 不需要安裝客戶端。 

      win32_11gR2_client.zip(652M)

      win64_11gR2_client.zip(587M) 

>Oracle.DataAccess.dll—— Oracle 官方 提供的.Net 程序集【在安裝目錄 ODP.NET 中】。

      Oracle.DataAccess.dll  嚴格區分 x32、x64 —— 程序集 不是 AnyCPU。

      x32 客戶端 只包括 x32 的 Oracle.DataAccess.dll。

      x64 客戶端 只包括 x64 的 Oracle.DataAccess.dll。

       發布程序的時候,就很容易在這個地方 出現問題。

>Oracle.ManagedDataAccess.dll —— Oracle 官方 提供的.Net  程序集

       支持 AnyCPU

       不需要安裝 600M 的客戶端

      Oracle.ManagedDataAccess —— 你值得擁有。

>Oracle.DataAccess.dll  和  Oracle.ManagedDataAccess.dll  用法完全一樣。

      支持的 SQL腳本語法一樣。

      SQL 腳本 不能以 分號 結尾。

      一樣的:這也不支持,那也不支持。

 

 

  

C# 調用 Oracle 語法限制

      >Oracle 不支持 自增主鍵 —— 自增主鍵 需要使用 觸發器。

      >Oracle 表名,字段名 不能超過30個字符。

      >腳本 參數化,    關鍵符為 : —— SQLServer 關鍵符為 @

      >腳本 名稱區域, 關鍵符為 "表名"."字段名" —— SQLServer 關鍵符為 [表名].[字段名]

           警告:腳本中 不建議 將 數據庫名、表名、字段名 用 引號括起來 —— 后果很嚴重。

 

      >支持 多條 修改語句 同時執行:

復制代碼
          BEGIN

             UPDATE TB_Test SET Name='INK';

             DELETE TB_Test WHERE Name='INK';

             INSERT INTO TB_Test(Name) VALUES('INK');

          END;
復制代碼

 

       >不支持 多條 查詢語句,得到 DataSet —— 支持 單一查詢得到 DataSet。

       >支持 ExecuteScalar —— 但是 執行腳本 必須是 單條腳本。

       >不支持 插入&查詢 自增列—— SQLServer 支持 INSERT INTO…. SELECT@@IDENTITY

           警告:即使使用 觸發器 實現 自增ID,以下語法也 無法執行

復制代碼
          BEGIN

             INSERT INTO TB_Test(Name) VALUES('INK');   --先執行 插入

             SELECT MAX(ID) FROMTB_Test;                --再執行 查詢 最大ID

          END
復制代碼

 

C# 調用 Oracle 的死結 在於:不支持 多條 非影響SQL腳本同時執行。

 

有鑒於此,自己隨手寫了一個OracleHelper.cs

       >之前 Oracle 腳本, 自然是 支持的。

       >多條 Oracle 腳本,用 ; 分割 —— 即能支持 多條SQL腳本。

          >避開了 SQLServer 遷移 Oracle 過程中,出現的腳本不兼容。

          >多條SQL腳本將自動開啟 數據庫事務,確保 絕對正確。

          >支持 多條SELECT返回 多DataTable的 DataSet。

          >支持 插入&查詢自增列(觸發器實現的 自增列) 

 

Oracle 全托管程序集 Oracle.ManagedDataAccess.dll  

          >不再需要安裝 600M 的客戶端,只需要 單純引用程序集 就行。

          >Oracle.ManagedDataAccess.dll  只是簡化了 安裝部署,支持 AnyCPU。

          >測試通過,但是 功能和 Oracle.DataAccess.dll 功能一樣:

 

                  

 

 

我這次死定了 

      >近來 公司的項目 SQLServer  要 改寫 Oracle。

      >但是 很多 SQLServer 的 語法 移植到 Oracle 很糾結,如果 多條SQL 都轉換成 存儲過程 —— 這工作量 太大,而且 存儲過程數目都會 報表。

      >為了 讓 SQLServer 語法 兼容到 Oracle  才在工作中 花了 兩小時 寫了這個 OracleHelper.cs

      >我只是一個 Oracle 的 采購,我只是 看了 http://www.cnblogs.com/dusmos/p/4451456.html 這篇文章之后,出於 探討學習 的態度 發出來的 —— 文章也只是用的 很普通的前綴 『片段』

      >這篇文章 上了 博客園的首頁,我一點准備都沒有 —— 我這淺薄的 Oracle 功底,根本經不起考驗,更經不起 博客園園友 潮水般 的 狂批猛踩。

      >這次,我死定了。。。。

         

 

 

代碼如下:

 

  View Code

 

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM