C#使用Oracle.ManagedDataAccess.dll

在剛接觸C#的時候因爲公司使用的就是Oracle數據庫,那麼C#怎麼鏈接Oracle數據庫就成了首要去掌握的知識點了。在那時沒有ODP.NET,但visual studio卻對Oralce數據庫的調用進行了集成,就是下圖中的這個,儘管如今使用這個的時候visual studio提醒過期的,但在那時倒是很是好用的。sql

爲何如今visual studio中這個程序集依然能使用,有ODP.NET,單單要拿出Oracle.ManagedDataAccess.dll進行本文的重點呢?數據庫

一、visual studio中提醒過期,由於微軟和甲骨文存在數據庫的競爭關係,而且從.NET的更新來看這個程序集沒有再更新過,對於數據庫一直在更新而調用的程序集一直不更新敢用下去麼?還有一個我認爲很是重要的緣由就是使用這個程序集,擺脫不了每個運行程序的客戶機上都要去安裝Oracle客戶端的事實,試想一下,若是用戶數量巨大的時候,安裝客戶端的工做量就至關的大,很耗費資源;編程

二、甲骨文後來出了ODP.NET,各類資料以及官網上都說須要安裝ODP.NET,而後引用Oracle.ManagedDataAccess.dll,他和visual studio中的程序集最大的區別在於會隨着數據庫更新,是oracle官方出的驅動;oracle

三、其實通過測試,ODP.NET的安裝徹底是沒有必要的,直接在網上下載一個Oracle.ManagedDataAccess.dll,按以下方式引用便可,使用此種方式減小了ODP.NET的安裝,無視操做系統的位數,最重要的是減小了Oracle客戶端的安裝;工具

 

那在哪裏下載Oracle.ManagedDataAccess.dll呢?若是Oracle.ManagedDataAccess.dll有更新怎麼知道呢?這個時候全宇宙最強大開發工具登場了!開發工具

安裝完成就能夠擼代碼了,而且若是有更新能夠隨時能看到。而且在編程方面和之前使用System.Data.OracleClient程序集沒有多大的不一樣,基本上拿之前使用System.Data.OracleClient程序集的代碼作少量的改動便可。測試

一、使用了鏈接字符串,而不是用oracle客戶端的服務名了;spa

二、幾個命名空間的變化;操作系統

下面是對數據庫經常使用操做的封裝3d

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using Oracle.ManagedDataAccess.Client;
using System.Data;
using System.IO;
using System.Collections;
using System.Diagnostics;
using Oracle.ManagedDataAccess.Types;

namespace OracleDemo
{
    public class OracleHelper
    {
        private static string connStr = "User Id=admin;Password=123;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=test)))";

        #region 執行SQL語句,返回受影響行數
        public static int ExecuteNonQuery(string sql, params OracleParameter[] parameters)
        {
            using (OracleConnection conn = new OracleConnection(connStr))
            {
                conn.Open();
                using (OracleCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteNonQuery();
                }
            }
        }
        #endregion
        #region 執行SQL語句,返回DataTable;只用來執行查詢結果比較少的狀況
        public static DataTable ExecuteDataTable(string sql, params OracleParameter[] parameters)
        {
            using (OracleConnection conn = new OracleConnection(connStr))
            {
                conn.Open();
                using (OracleCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    OracleDataAdapter adapter = new OracleDataAdapter(cmd);
                    DataTable datatable = new DataTable();
                    adapter.Fill(datatable);
                    return datatable;
                }
            }
        }
        #endregion
    }
}

如下代碼是調用部分

                string sqlString = "Select a.col1,a.col2 From test a Where a.id=:id";
                DataTable dt = OracleHelper.ExecuteDataTable(sqlString,new OracleParameter(":id",1));

 

程序編寫完成,生成完成後,目錄大概以下:

這時候拷貝Debug文件夾到目標客戶電腦上便可直接運行了(前提是目標客戶電腦上有.NET Framework),徹底擺脫安裝Oracle客戶端。

相關文章
相關標籤/搜索