C# 多種方式連接Oracle。

来源:https://www.cnblogs.com/wujiadexingfu/archive/2018/03/04/8505588.html
-Advertisement-
Play Games

廢話不多說直接正題: 首先我們先在Oracle資料庫下建了一個用戶叫做lisi,密碼為lisi,在這個用戶下建立一張表叫做“USERS”,在這個表下新增三個數據。 方式一:利用OleDb連接Oracle。 方式二:利用Oracle.ManagedDataAccess.Client方式,在使用前,我們 ...


廢話不多說直接正題:

首先我們先在Oracle資料庫下建了一個用戶叫做lisi,密碼為lisi,在這個用戶下建立一張表叫做“USERS”,在這個表下新增三個數據。

 

方式一:利用OleDb連接Oracle。

 1    #region  使用OleDb方式
 2             Console.WriteLine("OleDb方式");
 3             OleDbConnection oledbConnection = new OleDbConnection("Provider=OraOLEDB.Oracle; Data Source=MLDN; User Id=lisi; Password=lisi;");
 4             OleDbCommand oledbCommand = new OleDbCommand();
 5             oledbCommand.CommandText = "select * from USERS";
 6             oledbCommand.CommandType = CommandType.Text;
 7             oledbCommand.Connection = oledbConnection;
 8             oledbConnection.Open();
 9             var oledbReader = oledbCommand.ExecuteReader();
10             while (oledbReader.Read())
11             {
12                 Console.WriteLine("姓名:"+oledbReader[1]);
13             }
14             oledbConnection.Close();
15   #endregion

方式二:利用Oracle.ManagedDataAccess.Client方式,在使用前,我們需要先在Nuget中找到Oracle.ManagedDataAccess,然後安裝,該方式好處之一是不需要在客戶端上安裝Oracle客戶端,該版本是由Oracle公司開發的,而且微軟已經放棄了自己的System.Data.OracleClient方式(下麵會有介紹),推薦使用這種方式。

程式碼如下:

  #region OracleConnection
            //OracleConnection connection = new OracleConnection("Password=lisi;User ID=lisi;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.229.138)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=****)))");沒有安裝客戶端的話,可以使用這種方式
            Console.WriteLine("Oracle.ManagedDataAccess.Client方式");
            OracleConnection oralceConnection = new OracleConnection("Data Source=MLDN; User Id=lisi; Password=lisi;");
            oralceConnection.Open();
            OracleCommand oracleCommand = new OracleCommand();
            oracleCommand.CommandText = "select * from USERS";
            oracleCommand.CommandType = CommandType.Text;
            oracleCommand.Connection = oralceConnection;
            var oracleReader = oracleCommand.ExecuteReader();
            while (oracleReader.Read())
            {
                Console.WriteLine("姓名:" + oracleReader[1]);
            }
            oralceConnection.Close();
            #endregion

方式三:利用odbc方式

        #region odbc

            Console.WriteLine("odbc方式");
            OdbcConnection odbcConnection = new OdbcConnection("Driver={Microsoft ODBC for Oracle};Server=MLDN;Uid=lisi;Pwd=lisi;");
            odbcConnection.Open();
         OdbcCommand odbcCommand = new OdbcCommand();
         odbcCommand.CommandText = "select * from USERS";
         odbcCommand.CommandType = CommandType.Text;
         odbcCommand.Connection = odbcConnection;
         var odbcReader= odbcCommand.ExecuteReader();

         while (odbcReader.Read())
         {
             Console.WriteLine("姓名:" + odbcReader[1]);
         } 
            odbcConnection.Close();

#endregion

 

方式四:利用System.Data.OracleClient方式(該方式已過時,不推薦使用)。

雖然已經過時了但是還是可以使用的,代碼如下:

 1       #region
 2 
 3             Console.WriteLine("System.Data.OracleClient方式");
 4          System.Data.OracleClient.OracleConnection clientConnection = new System.Data.OracleClient.OracleConnection();
 5          clientConnection.ConnectionString = " Data Source=MLDN; User Id=lisi; Password=lisi;";
 6          System.Data.OracleClient.OracleCommand clientCommand = new System.Data.OracleClient.OracleCommand();
 7 
 8          clientCommand.CommandText = "select * from USERS";
 9          clientCommand.Connection = clientConnection;
10          clientCommand.CommandType = CommandType.Text;
11          clientConnection.Open();
12          var clientReader = clientCommand.ExecuteReader();
13          while (clientReader.Read())
14          {
15 
16              Console.WriteLine("姓名:" + clientReader[1]);
17          }
18          clientConnection.Close();
19             #endregion

 方式五:使用可以連接Oracle的Entity Framework工具,在使用前需要先安裝一個插件包,我的VS是2013的,插件包在如下地址:

 http://www.oracle.com/technetwork/cn/topics/dotnet/downloads/odacmsidownloadvs2013-2756823-zhs.html

當安裝好了之後,我們可以使用EF去連接Oralce資料庫了,連接方式如下:

然後我們在UI畫面中拉取我們需要用到的表,註意使用EF的時候是要設置表主鍵的,所以我們需要設置USERS這張表的ID為主鍵,否則沒有辦法拉取到該表對象。

 代碼如下:

  #region Oracle EF
         Console.WriteLine("Oracle EF方式");
         Entities db = new Entities();
         var users = db.USERS.ToList();
         foreach (var item in users)
         {
             Console.WriteLine("姓名:" + item.NAME);
         }
     #endregion 

 

 執行結果畫面:

 

 

綜上是我目前所知道的連接Oracle的方式,至於還有其他方式,我暫時可能就不太清楚了。

參考文章:

http://blog.csdn.net/zz155666/article/details/53163115

https://www.cnblogs.com/gguozhenqian/p/4262813.html

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 單例模式是一種常見的設計模式,該模式的主要目的是確保某一個類只有一個實例存在。當你希望在整個系統中,某個類只能出現一個實例時,單例對象就能派上用場。 比如,伺服器的配置信息寫在一個文件中online.conf中,客戶端通過一個 Config 的類來讀取配置文件的內容。如果在程式運行期間,有很多地方都 ...
  • swing之簡單登陸窗體的實現 幾點剛學時寫代碼犯得錯誤: 1.老是忘記佈局管理,這樣導致有時候界面只會出來你寫的其中一個組件 2.獲取密碼的時候不能只是簡單的getpassword去比較,要把獲取的東西轉換成String類型後再去比較 3.如果不寫setvisible,啥也不會出來 上兩張截圖吧: ...
  • 接上文 註釋的使用 在jinjia2模板中,使用{# #}進行代碼註釋,如下所示 運行後發現,註釋不會被render出來 去掉空行 兩種方法可以去掉jinjia2模板中的空白行,一是設置jinjia2的環境變數,如下 app.jinja_env.trim_blocks = True app.jinj ...
  • File 遞歸刪除文件夾中所有文件文件夾 又寫了一遍 找不同 ...
  • 本文將介紹如何使用虛擬機一步步從安裝Ubuntu到搭建Hadoop偽分散式集群。 本文主要參考:在VMware下安裝Ubuntu並部署Hadoop1.2.1分散式環境 - CSDN博客 一、所需的環境和軟體:(以下是我們的環境,僅供參考) 1. 操作系統:Windows 10 64位 2. 記憶體:4 ...
  • 在某種情況下,我們不得不進行整型等數據類型與字元串類型的轉換,比如,將“1234”轉換為整數,常規的我們可以使用atoi函數來進行轉換,或者是寫一個迴圈來做轉換,我們在這裡也可以使用sstream類來做轉換。示例代碼如下,演示了atoi和sstream的方法。 ...
  • 前言 朋友們, 大家好,我還是Rector,寫ASP.NET MVC 5系列文章 [\[一步一步創建ASP.NET MVC5程式Repository+Autofac+Automapper+SqlSugar\]][6] 的那個家伙。 今天為大家帶來本系列的第十篇文章。 本文知識要點 本文將要給大家分享 ...
  • 最近公司做的項目要和京東的數據做對接,所以要做個類似京東商品的詳情頁。頁面的數據,是可以從京東介面獲取到的,但是地址插件選擇的效果需要自己實現。前端的同事在之前的項目中,已經選擇了一款地址插件(city-picker.js),但是這款插件最多只支持三級地址,而且最主要的是這插件的地址數據來源,是寫死 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...