C#使用Oracle.ManagedDataAccess.dll

 

C#连接Oracle数据库,使用Oracle客户端并配置tnsnames.ora模式经常会出现断连的情况,因此采用以下方式数据库连接。

由于公司使用的就是Oracle数据库,那么C#怎么连接Oracle数据库就成了首要去掌握的知识点了。在那时没有ODP.NET,但visual studio却对Oralce数据库的调用进行了集成,就是下图中的这个,尽管现在使用这个的时候visual studio提醒过时的,但在那时却是非常好用的。

为什么现在visual studio中这个程序集依然能使用,有ODP.NET,单单要拿出Oracle.ManagedDataAccess.dll进行本文的重点呢?

1、visual studio中提醒过时,因为微软和甲骨文存在数据库的竞争关系,并且从.NET的更新来看这个程序集没有再更新过,对于数据库一直在更新而调用的程序集一直不更新敢用下去么?还有一个我认为非常重要的原因就是使用这个程序集,摆脱不了每一个运行程序的客户机上都要去安装Oracle客户端的事实,试想一下,如果用户数量巨大的时候,安装客户端的工作量就相当的大,很耗费资源;

2、甲骨文后来出了ODP.NET,各种资料以及官网上都说需要安装ODP.NET,然后引用Oracle.ManagedDataAccess.dll,他和visual studio中的程序集最大的区别在于会随着数据库更新,是oracle官方出的驱动;

3、其实经过测试,ODP.NET的安装完全是没有必要的,直接在网上下载一个Oracle.ManagedDataAccess.dll,按如下方式引用即可,使用此种方式减少了ODP.NET的安装,无视操作系统的位数,最重要的是减少了Oracle客户端的安装;

 

那在哪里下载Oracle.ManagedDataAccess.dll呢?如果Oracle.ManagedDataAccess.dll有更新怎么知道呢?这个时候全宇宙最强大开发工具登场了!

安装完成就可以撸代码了,并且如果有更新可以随时能看到。并且在编程方面和以前使用System.Data.OracleClient程序集没有多大的不同,基本上拿以前使用System.Data.OracleClient程序集的代码做少许的改动即可。

1、使用了连接字符串,而不是用oracle客户端的服务名了;

2、几个命名空间的变化;

下面是对数据库常用操作的封装

复制代码

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客户端。

来源:网络


智能推荐

C#使用WebKitBrowser.dll填坑记

转载地址:https://www.cnblogs.com/twzy/p/5325769.html .Net 自带的 Webbrowser 有着太多的平台限制。对于用户体验之上的今天,这无疑是一个噩梦, 然后就开始找 .Net下的WebKitBrowser.dll (后面提供下载) 从开源网站下到程序,点击完美运行 怀着激动的心情开始集成到自己的软件中,该引用的引用,该复制的复制 然后 首先想到的是...

使用ildasm反编译修改c# dll

在开发中遇到这样一个场景,需要修改一个dll文件(.NET程序集)中某些地方的类型名称,但没有源代码,只能修改IL代码。 操作步骤如下: 1. 运行ildasm ildasm是由微软提供的.NET程序反编译工具,位于“C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\”。 2. 用ildasm打开要修改的程序集,如下图: 3...

C# 开源控件weiFenLuo.winFormsUI.Docking.dll使用

weiFenLuo.winFormsUI.Docking.dll是一个页面布局控件,可以实现子窗口在主窗口上任意贴边停靠、浮动、Tab化。Dock翻译为码头,就是说子窗口停靠到码头上,很形象啊。 使用过程: 1. 准备控件的dll文件,网上可以下载到。 2. 一个小例子 这里创建了一个C#的window Form工程,中有两个form,form1,form2,form1为主窗口,做为码头使用的,f...

C#中gsdll32.dll使用方法

本文章介绍C#的winform中PDF转图片的免费组件gsdll32.dll的使用方法 1、下载并安装GhostScript 8.64 2、在安装目录下找到gsdll32.dll文件 3、将gsdll32.dll文件拷贝到C#工具的bin/debug目录下 4、gsdll32.dll文件是二次封装类,在C#的winform中调用即可将PDF转换为各种类型的图片...

使用VS2013创建C#的dll文件

首先,打开VS2013,选择“新建项目”。我这里是在起始页上新建的,当然也可以从菜单栏里的“文件”,选择“新建”,选择“项目” 新建好的类库,就是长这样的 給Class1重命名MySpecialClass 选择菜单栏里的“生成\建置”,选择“生成解决方案\建置方案&r...

猜你喜欢

[C#] 如何创建DLL并在项目中使用

注意: 文章适合初学者, 讲的较为详细, 大佬可以绕道 作者也是自学C#的, 所以有些东西可能讲的也有些不好, 请见谅 关于DLL: 在C#中, DLL可以说是类库, 创建一个类库类型的项目后, 生成时生成的文件时一个DLL文件 一个类库中, 包含一个或多个类, 这些类处于某个命名空间下, 当引用这个DLL文件后, using 相应的命名空间后即可直接使用类库中所包含的类 一般的, 创建DLL文件...

使用VS2013创建C#的dll文件

之前在看C#书的时候,讲到了命名空间这一部分,于是去网上搜了一下如何用VS2013来创建dll文件,看到大家很多都是用C++里的win32来创建的,感觉很不方便,这VS2013里现在都是有各种模版文件了,我们其实可以直接使用它们来创建的。     这就写了一个简单的教程,方便大家学习使用VS2013来创建C#的dll文件。     (1)首先,打开VS201...

质检乌龙?巴西溃坝事故发酵,德国工程师被捕

中新网1月31日电 据外媒报道,日前,巴西溃坝事故持续发酵。南德意志集团 TüV SüD位于巴西圣保罗的办事处遭到警方搜查,没收了电脑和文件。 据报道,南德意志集团TüV SüD出具的质量检测合格认证,是2018年12月为大坝发放经营许可证的依据,不过在这份认证文件中,也提到了大坝可能存在的风险。据称,巴西政府环保机构的一名代表,就曾反对颁发该认证。 1月2...

使用eclipse创建spring cloud的eureka客户端和eureka服务端

我也是初学spring cloud,其中也遇到了坑,通过查资料并没有爬出坑,最后通过阅读spring cloud的中文官方文档解决,所以希望刚学spring cloud的朋友先阅读官方文档。官方文档地址:https://springcloud.cc/spring-cloud-dalston.html#_circuit_breaker_hystrix_clients 或者在浏览器中直接搜索sprin...

NOIP普及组2018T4对称二叉树题解

                              NOIP普及组2018T4对称二叉树题解                     &nbs...

问答精选

Java Generic from Activity to fragment to adapter

I am working in android app, have designed a generic adapter and parameterized adapter will inherit this. child class I am calling this adapter in a fragment and that fragment is also need to be gener...

Redirection in nginx

I'm very new to nginx and hit the wall configuring simple redirection. Here is my very simple config trying redirection: When go to site from desktop everything is ok and my request is going to uwsgi....

java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.RectF

I'm kinda new to this all android game development and need a little help..my game is crashing and i cant find to solve the problem..Thank you in advance. and here is the log You have not initialized ...

Delphi Alt key + accelerator key plays a "wrong entry" sound

I'm coding a custom buttonn derived from tExCustomControl wich, in turn, is derived from tCustomControl. The tExCustomControl component, takes care of painting and has an internal tLabel for caption d...

How to change source code in maven dependency?

I have a maven project with a bunch of dependencies, one of which I'd like to print a line to console to called pulsar-log4j2-appender. I tried opening the .class file in question by following in Inte...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答