C# 连接Oracle数据库三种方法

目前了解C#中连接Oracle数据库的方法有3种,分布是微软的System.Data.OracleClient,Oracle的Oracle.DataAccess.Client和Oracle的Oracle.ManagedDataAccess.dll(最优)

(1).System.Data.OracleClient

.微软的System.Data.OracleClient可以直接引用,但是VS会提示“System.Data.OracleClient.OracleConnection”已过时,这表明微软自己都不建议使用了,所以知道就可以了,不必使用

(2).Oracle.DataAccess.Client

C#使用Oracle.DataAccess.Client也叫ODP.net,他是Oracle提供的数据库访问类库,其功能和效率上都有所保证,它还有一个非常方便特性:在客户端上,可以不用安装Oracle客户端,直接拷贝即可使用。由于微软在.net framework4中会将System.Data.OracleClient.dll deprecated,而且就访问效率和速度而言,System.Data.OracleClient.dll与Oracle.DataAccess.dll相比,微软的确实没有oracle提供的类库有优势,所以我放弃了使用多年的System.Data.OracleClient.dll,取而代之的是odp.net。然而odp.net的优点不止这些,还包括:
1.不在安装客户端也能访问服务器上的oracle(假设Application Server与DB Server 分开)
2.不需要配置TnsNames.Ora文件

具体的使用方法请参考这位大侠的 http://blog.csdn.net/rrrrssss00/article/details/7178515/

还有这位大侠的 http://blog.csdn.net/sumirry/article/details/46746331

如果项目要从System.Data.OracleClient.OracleConnection转Oracle.DataAccess.Client时,只需要在oracle 安装目录下 找到 Oracle.DataAccess.dll添加引用,后 using Oracle.DataAccess.Client;
其他的都不用动,即可。
连接字符串中 如有 用的是 user=xxx 就改成user id=xxx把原来 Using 的System.Data.OracleClient去掉即可。

(3).Oracle.ManagedDataAccess.dll

重点学习最后一种Oracle.ManagedDataAccess.dll, 第二种的优点很多,但是也有缺点,就是要区分用区分x86/x64版本。

下载dll和使用方法参考这位大侠的 http://www.cnblogs.com/yjmyzz/archive/2013/11/01/3400999.html.

使用方法:

1.dll下载:http://files.cnblogs.com/yjmyzz/Oracle.ManagedDataAccess.zip

2.可以直接添加引用

3.使用代码:

复制代码
using System;
2 using System.Data;
3 using Oracle.ManagedDataAccess.Client;
4
5 namespace ODP.NET
6 {
7 class Program
8 {
9 static void Main(string[] args)
10 {
11 OracleConnection conn = null;
12 try
13 {
14 conn = OpenConn();
15 var cmd = conn.CreateCommand();
16 cmd.CommandText = “select * from s_awb_master where rownum=1”;
17 cmd.CommandType = CommandType.Text;
18 var reader = cmd.ExecuteReader();
19 while (reader.Read())
20 {
21 Console.WriteLine(string.Format(“AwbPre:{0},AwbNo:{1}”, reader[“AwbPre”], reader[“AwbNo”]));
22 }
23 }
24 catch (Exception ex)
25 {
26 Console.WriteLine(ex.Message);
27 }
28 finally
29 {
30 CloseConn(conn);
31 }
32 Console.Read();
33 }
34
35
36 static OracleConnection OpenConn()
37 {
38 OracleConnection conn = new OracleConnection();
39 conn.ConnectionString = “Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=...)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=)));Persist Security Info=True;User ID=;Password=***;”;
40 conn.Open();
41 return conn;
42 }
43
44 static void CloseConn(OracleConnection conn)
45 {
46 if (conn == null) { return; }
47 try
48 {
49 if (conn.State != ConnectionState.Closed)
50 {
51 conn.Close();
52 }
53 }
54 catch (Exception e)
55 {
56 Console.WriteLine(e.Message);
57 }
58 finally
59 {
60 conn.Dispose();
61 }
62 }
63 }
64 }

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值