C#连接Oracle数据库使用Oracle.ManagedDataAccess.dll
作者:上青天揽月 发布时间:2024-01-20 11:52:53
在刚接触C#的时候由于公司使用的就是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客户端。
来源:http://www.cnblogs.com/goldenbridge/p/7812081.html


猜你喜欢
- 一. 介绍一个计数器工具提供快速和方便的计数,Counter是一个dict的子类,用于计数可哈希对象。它是一个集合,元素像字典键(key)一
- 选择排序算法步骤:找到数组中最小的那个元素中,将它和数组的第一个元素交换位置,在剩下的元素中找到最小的元素,将它和数组的第二个元素交换位置,
- location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.hre
- 利用layui制作与众不同的感谢表单,表格layui极大的提高了前端开发效率,它极具个性的样式等等都非常吸引人,接下来我将为大家展示如何利用
- 插入数据MySQL 表中使用 INSERT INTO SQL语句来插入数据。你可以通过 mysql> 命令提示窗口中向数据表中插入数据
- 本文实例讲述了Go语言图片处理和生成缩略图的方法。分享给大家供大家参考。具体实现方法如下:package mainimport ( 
- 项目应用中,曾有以下一个场景:接口中要求发送一个int类型的流水号,由于多线程模式,如果用时间戳,可能会有重复的情况(当然概率很小)。所以想
- php对数字进行万。亿的转化/** * 格式化数字 */public function float_number($number){ &nb
- SOLyog的下载、安装以及使用很简单。我去了相关网站下载,它只有384K字节大小。它把两个文件(一个可执行文件.exe和一个动态链接库文件
- 在读取中文的情况下,通常会遇到一些编码的问题,但是首先需要了解目前的编码方式是什么,然后再用decode或者encode去编码和解码,下面是
- 作为一名优秀的接口调用工程师,对接口的返回信息进行校验是必不可少的。校验需要保证所返回的数据格式和内容正确,以此确保页面的正确展示和用户体验
- 前言1.工作中,经常需要合并多个Excel文件。如果文件数量比较多,则工作量大,易出错,此时,可以使用Python来快速的完成合并。2.使用
- Google中秋的logo出来了,酷似一美男站在月亮上,结果被网友弄出一撒尿版来。中国网民好智慧啊~原logo: 撒尿版logo:
- 不得不说python的自制包的相关工具真是多且混乱,什么setuptools,什么distutils,什么wheel,什么egg!!怎么有这
- 本文实例讲述了Python实现模拟分割大文件及多线程处理的方法。分享给大家供大家参考,具体如下:#!/usr/bin/env python#
- SQL Server对上亿的表进行排序或者上亿的表之间进行join,会导致系统失去响应。◆1.我确实做了一个很大的查询,涉及的数据表有两亿条
- 前言在写 python 程序的时候,经常会用到引入其他文件夹里的 py 文件,要是都在同目录下直接 import 就好了,可是有的不在同一个
- 字符串转日期、日期转字符串// 2014-02-25 /** * 字符串转时间(yyyy-MM-dd HH:mm:ss)
- 百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法:首先在百度AI创建一个应用,按照下图创建即可,创建后会
- 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心, mysql已经为我们提供了这样一个功