.net 连接oracle的几种方式_.net 链接oracle数据库-程序员宅基地

技术标签: C#/VS.Net/Mono  

http://blog.csdn.net/yaucyj/article/details/5899113

=================================================

    1、OracleClient方式,是微软专门针对Oracle数据库开发的,仅在 .NET Framework 1.1 版中受支持。据说速度快、性能好,是推荐使用的方式。但根据我的经验,当Oracle数据库服务器端采用英文字符集比如 US7ASCII 时,客户端不管字符集如何设置,读出的中文都是乱码;若服务器端用中文字符集比如 ZHS16GBK ,则无乱码问题。
  引用类库:System.Data.OracleClient.dll。 
  命名空间:System.Data.OracleClient。
  常用类:OracleConnection、OracleCommand、OracleDataAdapter、OracleTransaction、OracleDataReader等。
  典型连接字符串:“data source=oratest;user id=scott;password=tiger”(注意:可不指定 provider 驱动)。
  2、 OleDb方式,微软和Oracle公司各自提供了OleDb的驱动程序,使用方法的差别很少。不管Oracle服务器端用何字符集,读写中文均无乱码问题。
  命名空间:System.Data.OleDb。
  常用类:OleDbConnection、OleDbCommand、OleDbDataAdapter、OleDbTransaction、OleDbDataReader等。
  连接字符串:与OracleClient方式相比,要添加一个provider,微软为“provider=MSDAORA.1;”或“provider=MSDAORA”,Oracle为“provider='OraOleDb.Oracle';”。

      3、 oracle 提供的Oracle Data Provider for .NET(ODP.net)
    引用类库:Oracle.DataAccesss.dll 【安装oracle for .net的安装包Oracle Data Provider for .NET】
    命名空间:Oracle.DataAccess.Client和Oracle.DataAccess.Types【Oracle.DataAccess.Client用于设置数据库的连接等等通用功能,Oracle.DataAccess.Types用于设置

oracle自定义的一些数据类型】
    常用类:OracleConnection、OracleCommand、OracleDataReader 等
    连接字符串:和OleDb方式格式相同,只是provider换为 “Provider=OraOLEDB.Oracle.1”

      4、dotConnect For Oracle是Devart公司出品的一个.net平台访问Oracle数据库的一个驱动。它的专业版本是一个收费版本提供了许多别的驱动所没有的功能与特性,如对Linq To Oracle,Ado.Net Entity Framework For Oracle支持等。我们一般不会去买它来作开发,在实际项目中使用它的破解版本也不太合适。这里我们使用的是它的Express免费版本,这个版本提供的功能和微软和Oracle提供的版本基本一致。这个版本可以从下面的链接下载。
http://www.devart.com/dotconnect/oracle/dcoraclefree.exe

我考虑使用这个免费版本的理由如下:
1. 微软将在最新版本的.Net Framework中(4.0中吧),不再提供它们的Oracle驱动。这使用我对其它厂商提供的Oracle驱动产生了好感。
2. 使用微软提供的驱动有个几乎是无法解决的问题,就是OCI-22053 溢出错误 overflow error。Oracle 数值数据类型最多可存储 38 个字节的精度。当将 Oracle 数值转换为公共语言运行库数据类型时,Oracle 值可能会变得过大。这会导致 Oracle OCI-22053 溢出错误。特别是我们获取用avg等SQL函数算出来的数值时,经常会碰到这个问题。解决的办法是把数值精度在SQL语句中截短或把数值转换成字符串。但这总有点不爽吧。而 Devart dotConnect For Oracle则没有这个问题。
3. dotConnect For Oracle对Oracle数据库的各种编码都支持的很好。
4. dotConnect For Oracle可以在没有安装Oracle Client的机器上访问Oracle数据库服务。
5.性能上的考虑。按照Devart提供的数据,dotConnect For Oracle在性能上比微软和Oracle提供的驱动都要好。具体


=========================================



可以参考http://www.devart.com/dotconnect/oracle/performance.html 。


方式1:直接利用.NET的oracle驱动连接
安装Oracle客户端驱动包
找到服务器端安装路径:E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN下tnsnames.ora,把该文件覆盖客户端驱动目下该文件
配置客户端驱动
1、打开数据源管理
2、选择系统DSN,点击[添加]
3、弹出的界面中选择Oracle in OraDB10g_1驱动,弹出Oracle ODBC  Driver  Configuration界面
4、填写四个数据项Data Source Name    TNS  Services Name  User ID
其中TNS Servers Name指的是服务器端设置服务名称
这个部分可以省略
设置完成之后确定
引用System.data.oracleclient;

.代码如下:

 using System.data.oracleclient;
 string oradb = "Data Source=water;User Id=modis;Password=modis;Integrated Security=no";
 OracleConnection conn = new OracleConnection(oradb);
 conn.Open();

(我的环境为VS2005,oracle数据源连接只支持到10g以下。)

方式2:安装完ODP.net(Oracle Data Provider.NET),通过OLEDB连接。
引用System.Data.OleDb;
.代码如下:

 using System.Data.OleDb;
 string oradb = "Provider=OraOLEDB.Oracle;Data Source=water;User Id=modis;Password=modis;";
 OleDbConnection myConnection = new OleDbConnection(oradb);
 myConnection.Open();

方式3:安装完ODP.net,通过Oracle的连接器
引用动态链接库Oracle.DataAccess.Client.

.代码如下:

 using Oracle.DataAccess.Client;
 string oradb = "Data Source=water;User Id=modis;Password=modis;";
 OracleConnection conn = new OracleConnection(oradb); // C#
 conn.Open();

OracleClient是一种.NET Framework 数据提供程序

OracleClient .NET Framework 数据提供程序使用它自身的协议与Oracle通讯
Ole DB 通过OLE DB 服务组件 和 OLE DB 提供程序与 Database进行通信,也就是需要安装MDAC.
因此OracleClient比oledb具有更好的性能

OracleClient是微软提供的,不是Oracle自带的,Oracle自带的叫ODP.net(Oracle Data Provider for .net)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wlanye/article/details/40540605

智能推荐

project2016调配资源冲突-程序员宅基地

文章浏览阅读5.4k次,点赞9次,收藏26次。(1) Project查看资源负荷情况的方法和结果在工时类资源会存在资源过度分配(在同一个时间段给工时类资源分配的资源超出了他的最大单位)的情况,而成本类、材料类资源则不会有、查看资源负荷的方法有:在视图栏------资源图表如下图在这里我们可以看到每个资源的分配状况,如下图滚动鼠标滑轮就会出现不同的资源分配状况此时选择“资源”—“下一个资源过度分配处”如下图总结:甘特图、..._project2016调配资源冲突

推荐算法知识图谱模型(二):KGCN-程序员宅基地

文章浏览阅读235次。常用的KGE方法侧重于建模严格的语义相关性(例如,TransE和TransR假设头+关系=尾),这更适合于KG补全和链接预测等图内应用,而不是推荐。更自然、更直观的方法是直接设计一个图算法来利用KG结构。_图谱模型

ajax跨域与cookie跨域_一级域名 的cookie ajax 请求二级域名时获取cookie-程序员宅基地

文章浏览阅读389次。ajax跨域ajax跨域取数据(利用可以跨域加载js的原理 functioncallback(){ }这是需要返回这样一个js函数)ajax数据类型使用jsonp :如 ajax{ url:..._一级域名 的cookie ajax 请求二级域名时获取cookie

Flutter从0到1实现高性能、多功能的富文本编辑器(基础实战篇)_flutter 富文本-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏2次。在上一章中,我们分析了一个富文本编辑器需要有哪些模块组成。在本文中,让我们从零开始,去实现自定义的富文本编辑器。注:本文篇幅较长,从失败的方案开始分析再到成功实现自定义富文本编辑器,真正的从0到1。— 完整代码太多, 文章只分析核心代码,需要源码请到代码仓库作为基础的富文本编辑器实现,我们需要专注于简单且重要的部分,所以目前只需定义标题、文本对齐、文本粗体、文本斜体、下划线、文本删除线、文本缩进符等富文本基础功能。//定义默认颜色​...///用户自定义颜色解析。_flutter 富文本

新一代异步IO框架——io_uring 架构-程序员宅基地

文章浏览阅读30次。近年来,Linux社区开发了一种新的异步IO框架,称为io_uring。io_uring通过提供高度可扩展和高性能的异步IO接口,有效地解决了传统异步IO框架中的一些性能瓶颈和限制。io_uring已经成为许多高性能应用程序的首选异步IO框架,为开发者提供了更好的IO处理能力。io_uring 架构是建立在Linux内核之上的,它使用了一组新的系统调用和内核机制,以提供高性能和低延迟的异步IO操作。io_uring的设计目标是提供一种简单而强大的接口,使得开发者可以轻松地利用异步IO的优势。

耗时一个月!期末熬夜复习整理 | 计算机网络(谢希仁第七版)大合集【知识点+大量习题讲解】_计算机网络期末复习题-程序员宅基地

文章浏览阅读2.5w次,点赞204次,收藏1.8k次。期末计网满绩计划教材:计算机网络(第七版)谢希仁版目录1. 概述2. 物理层3. 数据链路层(次重点)4. 网络层(重点)5. 运输层(重点)6. 应用层7. 网络安全最后1. 概述第一章概述2. 物理层第二章物理层3. 数据链路层(次重点)第三章数据链路层4. 网络层(重点)第四章网络层5. 运输层(重点)第五章运输层6. 应用层第六章应用层7. 网络安全稍后发布最后小生凡一,期待你的关注。..._计算机网络期末复习题

随便推点

使用matplotlib绘图实现动态刷新(动画)效果_matplotlib 动态刷新-程序员宅基地

文章浏览阅读4.8k次,点赞7次,收藏36次。最近在做四足的运动学仿真,因为这一段时间用python比较多,所以想直接用python做运动仿真,通过画图来展示步态和运动效果。了解了一下matplotlib库之后又参考了一些网上的博客,成功实现了绘图动态刷新的效果,类似动画效果。_matplotlib 动态刷新

Apache Kafka 可视化工具调研_kafka-console-ui-程序员宅基地

文章浏览阅读3k次。Apache Kafka 可视化工具调研_kafka-console-ui

如何编译部署独立专用服务端(Standalone Dedicated Server)【UE4】_ue4 独立服务器搭建-程序员宅基地

文章浏览阅读1.4k次。一、下载源码及编译原文链接首先需要unrealengine官网上注册并加入github开发组才有权限进入下面地址。https://github.com/EpicGames/UnrealEngine/tags注意:编译专用服务器,只能用源码编译版本的引擎,安装版本的引擎无法编译Server。打开页面后下载一个最新的release版本,解压出来后先运行Setup.bat,会自动下载资源..._ue4 独立服务器搭建

Hadoop 序列化机制_hadoop final-程序员宅基地

文章浏览阅读493次。序列化是指将结构化对象转化为字节流以便在网络上传输或者写到磁盘上进行永久存储的过程,反序列化是指将字节流转回结构化对象的逆过程序列化用于分布式处理的两大领域,进程间通信和永久存储。在Hadoop中,系统中多个节点上进程间的通信是通过“远程过程调用”(remote procedure call, RPC)实现的。RPC将消息序列化成二进制流后发送到远程节点,远程节点接着将二进制流饭序列化为原始..._hadoop final

tinymce富文本编辑器实现本地图片上传_tinymce images_upload_handler-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏6次。在开发过程中使用tinymce富文本编辑器,发现他的图片上传默认是上传网络图片那么如何实现上传本地图片呢,上官网逛一圈,发现其实很简单在官网中找到下面这张图片,并且有相关的例子这里,我使用了自定义函数images_upload_handler (blobInfo, success, failure) { const url = 'uploadImg' ..._tinymce images_upload_handler

SpringCloud-拜托!面试请不要再问我Spring Cloud底层原理实战_spring cloud +sql springcloud底层组件-程序员宅基地

文章浏览阅读2.6k次,点赞5次,收藏14次。上一篇我们说到《拜托!面试请不要再问我Spring Cloud底层原理》,我们大概了解了Spring Cloud中各个组件的作用以及其背后实现的原理。但是俗话说得好,实践是检验真理的唯一标准。这一篇我们动手实践一下,即搭建一个包含订单服务、库存服务、仓库服务、积分服务的微服务架构项目。一、项目的工程结构工程名 服务名 端口号 shop-parent 父工程 ..._spring cloud +sql springcloud底层组件