一、问题描述
在开发C#.Net客户端程序时,使用了ODAC连接数据库,其开发环境需要安装ODP.NET插件,实际上是安装了一个Oracle Client。其连接Oracle的字符串直接配置到了这个Oracle Client下的配置文件中(%ORA_HOME%\client_1\NetWork\tnsnames.ora)中,信息如下:
HJSYSDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.52)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) ) )
由于连接字符串的IP和数据库实例需要在这个特定文件中配置,与所开发的客户端程序分离,对于项目的部署来说多出了两步:1)Oracle客户端的安装(480M多);2)数据库连接的手动配置。
为减少多余的安装过程以及便于将数据库连接的配置放置到项目程序中,使程序部署更简单化,需要一种免Oracle客户端的安装部署方法。
二、问题解决
直接使用ODP.net提供的动态库(最小支持),放置到项目启动目录下,如下文件:
oci.dll ociw32.dll Oracle.DataAccess.dll oraocci11.dll oraociei11.dll OraOps11w.dll
在项目的app.config中增加以下配置,为应用程序提供数据库连接驱动:
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.DataAccess.Client" />
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client"
description="Oracle Data Provider for .NET"
type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
由于没有使用Oracle客户端的连接实例,在程序中的连接需要做特别指定数据库连接的IP和数据库实例信息,如下所示:
string connectionString = " DATA SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" + "(HOST=192.168.18.52)(PORT=1521))" + "(CONNECT_DATA=(SERVICE_NAME=ORCL)));" + "USER ID=data;PASSWORD=data;"; using (OracleConnection connection = new OracleConnection(connectionString)) { string sql = "**********"; connection.Open(); OracleCommand cmd = new OracleCommand(sql, connection); OracleDataAdapter dataReader = new OracleDataAdapter(cmd); DataSet dataSet = new DataSet(); dataReader.Fill(dataSet); gridControl1.DataSource = dataSet.Tables[0]; }
如果使用实体集,之前直接使用Oracle客户端提供的连接字符串,App.config中的配置是这样的(留意HJSYSDB):
<connectionStrings> <add name="DataEntities" connectionString="metadata=res://*/Models.DataModel.csdl|res://*/Models.DataModel.ssdl|res://*/Models.DataModel.msl; provider=Oracle.DataAccess.Client; provider connection string=" DATA SOURCE=HJSYSDB; PERSIST SECURITY INFO=True;USER ID=DATA"" providerName="System.Data.EntityClient" /> </connectionStrings>
使用免安装的方法后,实体集的连接字符串也需要做相应的修改,其中改变的主要内容是DATA SOURCE的配置,其中包括了数据库服务器的IP地址以及数据库实例。
<connectionStrings> <add name="DataEntities" connectionString="metadata=res://*/Models.DataModel.csdl|res://*/Models.DataModel.ssdl|res://*/Models.DataModel.msl; provider=Oracle.DataAccess.Client; provider connection string=" DATA SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.18.52)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))); PERSIST SECURITY INFO=True;USER ID=DATA"" providerName="System.Data.EntityClient" /> </connectionStrings>
三、问题总结
1、使用ODP.net提供的Oracle.DataAccess.dll时,需要注意连接服务器的Oracle版本及程序所部署系统的版本问题。
2、Web程序的相关配置与此方法大致相同。
相关推荐
Oracle客户端是用于连接到Oracle数据库服务器的软件工具,它提供了数据查询、管理、开发等功能。在本教程中,我们将深入探讨Oracle 11g客户端的安装和配置过程,旨在帮助用户轻松完成这一任务。 首先,我们需要下载...
标题中的“一段无需安装Oracle客户端即可访问Oracle数据库的Delphi控件”指的是在Delphi编程环境中,使用...对于那些需要在不同环境中部署但又不想受到Oracle客户端安装限制的项目来说,这是一个非常实用的解决方案。
Oracle客户端是数据库管理和开发人员用来连接到Oracle数据库服务器的重要工具,尤其在进行PL/SQL开发时,它扮演着不可或缺的角色。"instantclient_11_2"是Oracle提供的一种轻量级客户端,允许用户在无需完整Oracle...
总之,Oracle客户端11g是一个方便用户快速接入Oracle数据库的工具,其免配置环境变量的特点降低了安装复杂度,而Instant Client的轻量化设计则提高了效率。用户主要需要关注TNS配置,以便顺利连接到目标Oracle服务器...
"Oracle客户端一键安装" 提供了一种简化安装过程的解决方案,尤其适用于那些希望快速设置并开始工作的用户。这个绿色客户端可能是免安装版或者精简版,旨在减少传统安装过程中的复杂性和时间消耗。 在描述中提到的...
标题中的“PB连ORACLE10免客户端”指的是使用PowerBuilder(PB)12.5连接Oracle 10g数据库时,不需安装完整的Oracle客户端软件,而是采用一种轻量级或者精简的方式进行连接。这种方法可以减少系统资源的占用,简化...
然而,使用ODP.NET时通常需要预先安装Oracle客户端,这对开发环境和部署提出了较高要求。 #### 三、免客户端连接的探索 在.NET开发中实现Oracle免客户端连接的目标是简化部署流程,减少对额外组件的依赖。以下是...
PLSQL Developer是一款专为Oracle数据库设计的集成开发环境(IDE),它使得数据库开发人员能够高效地编写、测试和管理PL/SQL代码,而无需在本地系统上安装完整的Oracle客户端。这款工具以其便捷性和易用性著称,尤其...
它包含了连接到Oracle数据库所需的基本组件,如OCI(Oracle Call Interface)、SQL*Plus和其他实用工具,适用于开发、测试或在没有完整Oracle客户端环境的系统上执行查询。以下是对Oracle Instant Client的详细解释...
Oracle客户端免安装版,也被称为Oracle Instant Client,是Oracle公司提供的一种轻量级的数据库连接工具,无需完整的Oracle数据库服务器安装即可使用。它主要用于在不安装完整客户端的情况下,实现应用程序与Oracle...
2. 快速部署:不需要经历漫长的Oracle客户端安装过程,只需要配置tnsnames.ora即可使用。 3. 便于移动:由于不依赖系统环境,可以在不同的计算机上方便地使用。 4. 管理简便:对于仅需进行开发和查询的用户,无需...
然而,有一种方法可以避免安装完整的Oracle客户端,那就是使用Oracle即时客户端(Oracle Instant Client)。本文将详细阐述如何在C#环境中,通过Oracle即时客户端连接到远程Oracle数据库。 Oracle即时客户端是一种...
这个"9i客户端 oracle客户端"的描述虽然简洁,但蕴含了丰富的IT知识,让我们深入了解一下它所涉及的关键点。 首先,Oracle 9i是Oracle公司推出的第九个版本,全称为Oracle Database 9i。这个版本首次引入了实时应用...
不过,需要注意的是,免安装版可能不包含所有Oracle客户端的功能,例如高级的诊断工具或特定版本的数据库适配器。如果需要这些高级功能,可能还是需要安装完整的Oracle客户端。在使用过程中,确保遵循软件的许可条款...
4. **Oracle Instant Client**: Oracle Instant Client是Oracle客户端的一个轻量级版本,它允许应用程序无需完整安装客户端即可连接到Oracle数据库。在Windows环境下,Instant Client通常用于那些需要快速部署或空间...
本文将详细介绍一种无需安装完整Oracle客户端即可通过PL/SQL Developer连接Oracle数据库的方法。 #### 准备工作 1. **下载Instant Client** Oracle官方提供了一个名为Instant Client的轻量级库集合,它包含了...
在日常的开发工作中,有时我们需要让.NET应用程序访问Oracle数据库,但为了节省资源或者简化部署步骤,我们可能并不希望在目标机器上安装完整的Oracle客户端。本文将详细介绍一种无需安装Oracle客户端即可实现.NET...
通常情况下,保持默认设置即可,但如果你有特殊的需求,如希望将Oracle客户端安装在非系统盘,以提高读写速度或节省系统分区空间,此时可以自定义安装路径。在其他选项中,除非你对Oracle环境有深入的理解,否则建议...