C#連接Oracle數(shù)據(jù)庫(kù)使用Oracle.ManagedDataAccess.dll
在剛接觸C#的時(shí)候由于公司使用的就是Oracle數(shù)據(jù)庫(kù),那么C#怎么連接Oracle數(shù)據(jù)庫(kù)就成了首要去掌握的知識(shí)點(diǎn)了。在那時(shí)沒(méi)有ODP.NET,但visual studio卻對(duì)Oralce數(shù)據(jù)庫(kù)的調(diào)用進(jìn)行了集成,就是下圖中的這個(gè),盡管現(xiàn)在使用這個(gè)的時(shí)候visual studio提醒過(guò)時(shí)的,但在那時(shí)卻是非常好用的。
為什么現(xiàn)在visual studio中這個(gè)程序集依然能使用,有ODP.NET,單單要拿出Oracle.ManagedDataAccess.dll進(jìn)行本文的重點(diǎn)呢?
1、visual studio中提醒過(guò)時(shí),因?yàn)槲④浐图坠俏拇嬖跀?shù)據(jù)庫(kù)的競(jìng)爭(zhēng)關(guān)系,并且從.NET的更新來(lái)看這個(gè)程序集沒(méi)有再更新過(guò),對(duì)于數(shù)據(jù)庫(kù)一直在更新而調(diào)用的程序集一直不更新敢用下去么?還有一個(gè)我認(rèn)為非常重要的原因就是使用這個(gè)程序集,擺脫不了每一個(gè)運(yùn)行程序的客戶(hù)機(jī)上都要去安裝Oracle客戶(hù)端的事實(shí),試想一下,如果用戶(hù)數(shù)量巨大的時(shí)候,安裝客戶(hù)端的工作量就相當(dāng)?shù)拇螅芎馁M(fèi)資源;
2、甲骨文后來(lái)出了ODP.NET,各種資料以及官網(wǎng)上都說(shuō)需要安裝ODP.NET,然后引用Oracle.ManagedDataAccess.dll,他和visual studio中的程序集最大的區(qū)別在于會(huì)隨著數(shù)據(jù)庫(kù)更新,是oracle官方出的驅(qū)動(dòng);
3、其實(shí)經(jīng)過(guò)測(cè)試,ODP.NET的安裝完全是沒(méi)有必要的,直接在網(wǎng)上下載一個(gè)Oracle.ManagedDataAccess.dll,按如下方式引用即可,使用此種方式減少了ODP.NET的安裝,無(wú)視操作系統(tǒng)的位數(shù),最重要的是減少了Oracle客戶(hù)端的安裝;
那在哪里下載Oracle.ManagedDataAccess.dll呢?如果Oracle.ManagedDataAccess.dll有更新怎么知道呢?這個(gè)時(shí)候全宇宙最強(qiáng)大開(kāi)發(fā)工具登場(chǎng)了!
安裝完成就可以擼代碼了,并且如果有更新可以隨時(shí)能看到。并且在編程方面和以前使用System.Data.OracleClient程序集沒(méi)有多大的不同,基本上拿以前使用System.Data.OracleClient程序集的代碼做少許的改動(dòng)即可。
1、使用了連接字符串,而不是用oracle客戶(hù)端的服務(wù)名了;
2、幾個(gè)命名空間的變化;
下面是對(duì)數(shù)據(jù)庫(kù)常用操作的封裝
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 執(zhí)行SQL語(yǔ)句,返回受影響行數(shù) 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 執(zhí)行SQL語(yǔ)句,返回DataTable;只用來(lái)執(zhí)行查詢(xún)結(jié)果比較少的情況 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 } }
以下代碼是調(diào)用部分
string sqlString = "Select a.col1,a.col2 From test a Where a.id=:id"; DataTable dt = OracleHelper.ExecuteDataTable(sqlString,new OracleParameter(":id",1));
程序編寫(xiě)完成,生成完成后,目錄大概如下:
這時(shí)候拷貝Debug文件夾到目標(biāo)客戶(hù)電腦上即可直接運(yùn)行了(前提是目標(biāo)客戶(hù)電腦上有.NET Framework),完全擺脫安裝Oracle客戶(hù)端。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:C# 字符串、數(shù)組和List的截取和轉(zhuǎn)換實(shí)例
欄 目:C#教程
下一篇:C# 8.0新特性介紹
本文標(biāo)題:C#連接Oracle數(shù)據(jù)庫(kù)使用Oracle.ManagedDataAccess.dll
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5414.html
您可能感興趣的文章
- 01-10C#動(dòng)態(tài)創(chuàng)建Access數(shù)據(jù)庫(kù)及密碼的方法
- 01-10C#使用ADO.Net部件來(lái)訪問(wèn)Access數(shù)據(jù)庫(kù)的方法
- 01-10C#將圖片存放到SQL SERVER數(shù)據(jù)庫(kù)中的方法
- 01-10C#操作數(shù)據(jù)庫(kù)中存取圖片文件的方法
- 01-10C#訪問(wèn)SQL Server數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法
- 01-10C#數(shù)據(jù)庫(kù)操作的用法
- 01-10C#.NET中如何批量插入大量數(shù)據(jù)到數(shù)據(jù)庫(kù)中
- 01-10VS中C#讀取app.config數(shù)據(jù)庫(kù)配置字符串的三種方法
- 01-10C#連接數(shù)據(jù)庫(kù)的方法
- 01-10輕松學(xué)習(xí)C#的運(yùn)算符


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫(xiě)Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置