Oracle 作为全球最大的数据库公司,在数据库方面拥有强大的能力,.net 平台也是一种流行的开发平台, c#与Oracle数据库有几种链接方式

一,微软的System.Data.OracleClient

微软的System.Data.OracleClient可以直接引用,但是在使用时VS会提示“System.Data.OracleClient.OracleConnection”已过时,微软建议不要使用此方式,后续有可能会不支持,了解一下在生产环境建议不使用

二,Oracle自家的Oracle.DataAccess.Client

Oracle提供的数据库访问类库也叫ODP.net,功能和效率都比较有优势,可以不用安装Oracle客户端,直接拷贝到工程应用即可使用。由于微软在.net framework4中会将System.Data.OracleClient.dll 弃用,访问数据效率,速度方面,System.Data.OracleClient.dll与Oracle.DataAccess.dll这两种方式,微软的缺少oracle提供的类库有优势。.net 高版的平台已经不建议使用System.Data.OracleClient.dll。

odp.net的优点包括:
1.不需要安装客户端能访问服务器上的oracle数据实例,简化数据库访问的配置
2.采用数据库直连的方式,不需要配置TnsNames.Ora文件

使用方法请参考这位大侠的ODP.NET 使用方式

3.原来旧项目需要从System.Data.OracleClient升级Oracle.DataAccess.Client时,只需要将 Oracle.DataAccess.dll 添加引用至工程,移除原来微软的引用, using Oracle.DataAccess.Client 即可。连接字符串采用直连字串

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=***.***.***.***)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=***)));Persist Security Info=True;User ID=***;Password=***;

4.缺点,就是要区分用区分x86/x64版本。

5.使用代码:

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 }

三,Oracle自家的Oracle.ManagedDataAccess.dll

.net framework 高版及 .net core 平台已经采用  Oracle.ManagedDataAccess.dll

下载dll和使用方法参考这位大侠的  用方法

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

2.可以直接添加引用

3.使用代码:

using System;
using Oracle.ManagedDataAccess.Client;
 
class Program
{
    static void Main(string[] args)
    {
        // 连接字符串,需要根据实际情况配置
        string connectionString = "User Id=your_username;Password=your_password;Data Source=your_oracle_db;";
 
        // 创建Oracle连接
        using (OracleConnection con = new OracleConnection(connectionString))
        {
            try
            {
                // 打开连接
                con.Open();
 
                // 创建Oracle命令
                OracleCommand cmd = con.CreateCommand();
                cmd.CommandText = "SELECT * FROM your_table"; // 替换为你的SQL查询
 
                // 执行查询并获取结果
                using (OracleDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        // 输出查询结果
                        Console.WriteLine(reader.GetString(0)); // 假设第一列是字符串类型
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                // 关闭连接
                con.Close();
            }
        }
    }
}

参考:https://www.cnblogs.com/yjmyzz/archive/2013/11/01/3400999.html

           https://www.cnblogs.com/yjmyzz/archive/2013/11/01/3400999.html

           https://www.cnblogs.com/masonlu/p/7514942.html

C# 连接Oracle数据库三种方法 - 王小鹏 - 博客园 (cnblogs.com)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐