如何引用Data.OracleClient.dll

由于从.net 4.0之后,微软将OracleClient.dll从框架里去除了,所以要使用,需要在VS2010里面去把项目的.net框架从.net 4.0 改成3.5,解决方案上->引用->添加引用,然后在.NET下就可以找到System.Data.OracleClient.dll,点击确定,就OK了。

这下总可以用了吧,其实噩耗才开始:

一:通过System.Data.OracleClient(需要安装Oracle客户端并配置tnsnames.ora)

本地使用Oracle是指在安装Oracle数据库的主机中连接和使用Oracle数据库。从安全性和负载均衡的角度考虑,这种方式是不可取的。这里仅作为实验使用。

本地连接的代码与远程连接实际上没有什么分别,只不过其data source指向服务器端的客户网络服务名。对于本文的数据库安装,它指向E:\Oracle_Server\oracle\ora92\network\admin\tnsnames.ora文件中所定义的网络服务名(有关内容请参考“Oracle客户端的安装与远程连接配置”一文)。

对于这种本地连接方式,在服务器端不能存在独立安装的客户端工具,否则data source只会去匹配独立客户端的tnsnames.ora文件,即使找不到对应的网络服务名,也不会再去匹配服务器端的服务名。这不知是.Net组件的设计错误,还是故意为之,以鼓励远程连接和使用Oracle。

建立连接的主要代码如下:

......

using System.Data.OracleClient;

......

//这里的“remotedb”对应于“Oracle客户端的安装与远程连接配置”一文中配置的客户端网络服务名

    OracleConnection conn=

         new OracleConnection("data source=remotedb;User Id=scott;Password=scott;");
conn.Open(); ......

1. 添加命名空间System.Data.OracleClient引用
2. using System.Data.OracleClient;
3.

string connString = "User ID=IFSAPP;Password=IFSAPP;Data Source=RACE;";
OracleConnection conn = new OracleConnection(connString);
try
{
conn.Open();
MessageBox.Show(conn.State.ToString());
}
catch (Exception ex)
{
ShowErrorMessage(ex.Message.ToString());
}
finally
{
conn.Close();
}

二:通过System.Data.OracleClient(需要安装Oracle客户端不需配置tnsnames.ora)

使用客户端网络服务名连接Oracle

基于业务逻辑与数据库实体的分层需要,一般要求在不同于Oracle数据库主机的客户端机器连接和使用Oracle数据库。这种情况要么是通过C/S应用程序的客户端访问数据库的情况;要么是在B/S应用程序中,在WEB服务器端远程连接Oracle数据库服务器。

通过客户端网络服务名远程连接Oracle,要求在客户端机器中安装Oracle客户端工具(安装类型可以不必选择“管理员”模式,而只需要安装运行时支持即可,为应用程序提供基本的网络服务配置工具等)。

建立连接的语句比较简单,关键点为data source的设置。这里的data source不像SqlServer连接字串中指的是数据库名称,而是指客户端网络服务名(相关内容请参考前面有关客户端安装的文章)。对于本文的Oracle安装来说,data source对应着E:\Oracle_Client\oracle\ora92\network\admin\tnsnames.ora配置文件中的网络服务名(出于方便试验的原因,数据库与独立的客户端工具分别安装在了同一台机器的不同目录)。在具体实施连接时,将根据data source的值去该客户网络服务配置文件中查找对应项,以获取数据库服务器主机地址、端口、全局数据库名等连接信息。

1. 添加命名空间System.Data.OracleClient引用
2. using System.Data.OracleClient;
3.

 string connString = "User ID=system;Password=123;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))";
using (OracleConnection conn = new OracleConnection(connString))
{
conn.Open();
using (OracleCommand cmd = new OracleCommand("select * from student", conn))
{
OracleDataAdapter sdat = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
sdat.Fill(ds,"p");
dgvData.DataSource=ds.Tables["p"];
} }

:通过System.Data.OleDb和微软公司的Oracle驱动

1. 添加命名空间System.Data.OracleClient引用
2. using System.Data.OleDb;
3.

string connString = "Provider=MSDAORA.1;User ID=IFSAPP;Password=IFSAPP;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = RACE)))";
OleDbConnection cnn = new OleDbConnection(connString);
try
{
conn.Open();
MessageBox.Show(conn.State.ToString());
}
catch (Exception ex)
{
ShowErrorMessage(ex.Message.ToString());
}
finally
{
conn.Close();
}

备注:
a.XP操作系统已经安装了微软公司的Oracle驱动C:\Program Files\Common Files\System\Ole DB\msdaora.dll
b.该驱动需要Oracle客户端的三个文件(oraocixe10.dll、oci.dll、ociw32.dll)放在System32下即可

四:使用ODP连接
1. 下载安装ODP.NET(http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html)
2. 安装完全成后会产生一序列文件。
3. 找到这个安装目录,打开文件夹%ORACLE_HOME%\Network\Admin在这个下面建立一个tnsnames.ora的文件,其内容可以参考其下的Sample目录下面的配置
Oracle.RACE =
(DESCRIPTION=
   (ADDRESS_LIST=
     (ADDRESS=
       (PROTOCOL=TCP)
       (HOST=127.0.0.1)
       (PORT=1521)
     )
   )
   (CONNECT_DATA=
     (SID=RACE)
     (SERVER=DEDICATED)
   )
)
Oracle.RACE为连接字符串名称,可以随便取。等号后面的字符串可以在Enterprise Manager Console工具中连接数据库后的TNS描述符中拷过来
4. 引用Oracle.DataAccess命名空间
5. using Oracle.DataAccess.Client;
6. 示例代码:
string connString = "DATA SOURCE=Oracle.RACE;PERSIST SECURITY INFO=True;USER ID=IFSAPP;password=IFSAPP";
OracleConnection conn = new OracleConnection(connString);
try
{
    conn.Open();
    OracleCommand cmd = new OracleCommand(cmdText,conn);
    OracleDataReader reader = cmd.ExecuteReader();
    this.DataGridView1.DataSource = reader;
    this.DataGridView1.DataBind();
}
catch (Exception ex)
{
    ShowErrorMessage(ex.Message.ToString());
}
finally
{
    conn.Close();
}

五:使用第三方驱动
第三方驱动有 Devart,下载驱动 http://www.devart.com/dotconnect/oracle/,但是是商业版,需要购买许可或破解
连接格式 User ID=myUsername;Password=myPassword;Host=ora;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;
1. 引用Devart.Data.Oracle命名空间
2. using Devart.Data.Oracle;
3.
OracleConnection conn = new OracleConnection();
conn.ConnectionString = "";
conn.Unicode = true;
conn.UserId = "IFSAPP";
conn.Password = "IFSAPP";
conn.Port = 1521;
conn.Server = "127.0.0.1";
conn.Sid = "RACE";
try
{
    conn.Open();
    //execute queries, etc
}
catch (Exception ex)
{
    ShowErrorMessage(ex.Message.ToString());
}
finally
{
    conn.Close();
}

连接Oracle的几种方式的更多相关文章

  1. c#连接oracle的几种方式

    一:通过System.Data.OracleClient(需要安装Oracle客户端并配置tnsnames.ora)1. 添加命名空间System.Data.OracleClient引用2. usin ...

  2. java连接oracle的几种方式

    jdbc连接(驱动包ojdbc6.jar)String driver = "oracle.jdbc.OracleDriver"; //驱动标识符 String url = &quo ...

  3. [转]C# 连接 Oracle 的几种方式

    本文转自:http://www.cnblogs.com/storys/archive/2013/03/06/2945914.html 一:通过System.Data.OracleClient(需要安装 ...

  4. C# 连接 Oracle 的几种方式

    一:通过System.Data.OracleClient(需要安装Oracle客户端并配置tnsnames.ora)1. 添加命名空间System.Data.OracleClient引用2. usin ...

  5. C# 连接 Oracle 的几种方式[转]

    本文转自:http://www.cnblogs.com/storys/archive/2013/03/06/2945914.html 一:通过System.Data.OracleClient(需要安装 ...

  6. 【转】C#工程连接oracle的一种方式

    源地址:https://blog.csdn.net/qq_16542775/article/details/52689068 项目中有个功能需要从一台Oracle数据库获取数据,本以为是很简单的事情, ...

  7. [C#.net]连接Oracle的几种方式

    一:通过System.Data.OracleClient(需要安装Oracle客户端并配置tnsnames.ora)1. 添加命名空间System.Data.OracleClient引用2. usin ...

  8. jdbc/ojdbc连oracle的三种方式(转)

    文章转自:http://blog.itpub.net/22664653/viewspace-1383092/ 前言  本文是一篇学习笔记,学习如何通过java jdbc /ojdbc 连接oracle ...

  9. jdbc连接oracle的三种方法

    jdbc连接oracle的三种方法 使用service_name,配置方式:jdbc:oracle:thin:@//<host>:<port>/<service_name ...

随机推荐

  1. springmvc xml 空模板

    <?xml version="1.0" encoding="UTF-8"?><!-- Bean头部 --><beans xmlns ...

  2. codevs 1170 双栈排序

    /* 好题啊 好题啊 而然还是看了一眼题解啊 有那么一点思路 但是离写出代码还很远 考虑必须分开放倒两个栈里的情况 即存在i<j<k 有 a[k]<a[i]<a[j] 这里RM ...

  3. 【css面试题】三个DIV要求水平对齐,左右两个DIV宽度固定为100px,中间那个DIV充满剩余的宽度(至少2种方法)

    这是我在一家公司面试时遇到的问题,当时没有答上来!! 所以看到的小伙伴一定要注意了!! 变化浏览器宽度可看到效果: 左 右 中 然后我们来看看代码: 第一种方法:(浮动) <style type ...

  4. 认识k_BackingField【转】

    事情从Json的序列化和反序列化说起. 在C#2.0的项目中,以前经常使用Json.Net实现序列化和反序列化.后来从c#3.0中开始使用新增的DataContractJsonSerializer进行 ...

  5. c#中使用数据读取器读取查询结果

    今天有时间了. 在看<c#数据库入门经典> ,总结数据读取器查询结果. 针对单个结果集使用读取器,有3中方法: String connString =..; String sql =@&q ...

  6. winows8.1或winows7 64bit 安装Itunes 64bit 11.1.3 无法打开一直停止工作的解决办法

    winows8.1或winows7 64bit 安装Itunes 64bit 11.1.3 无法打开一直停止工作的解决办法 系统环境变量里的Path追加 ;C:\program files (x86) ...

  7. oracle备份表

    oracle与sql单表备份的区别 (     oracle中备份表: create table 备份表名 as select * from 原表 sql server中备份表: select * i ...

  8. js获取标签的几种方式

    一:id获取(全部浏览器兼容) document.getElementById(""); <body> <div id="box">&l ...

  9. office2010怎么激活

    软件都是不断更新换代的,像我们使用最多的Microsoft Office软件,从最初的98,2000,2003,2007,到现在的2010.但是在最初安装Office软件时,都是未激活的.下面介绍的就 ...

  10. javascript——闭包

    <script type="text/javascript"> //什么是闭包: //是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域 ...