zoukankan      html  css  js  c++  java
  • 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;
    using System.Data;
    using Oracle.ManagedDataAccess.Client;
    
    namespace ODP.NET
    {
        class Program
        {
            static void Main(string[] args)
            {
                OracleConnection conn = null;
                try
                {
                    conn = OpenConn();
                    var cmd = conn.CreateCommand();
                    cmd.CommandText = "select * from s_awb_master where rownum=1";
                    cmd.CommandType = CommandType.Text;
                    var reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Console.WriteLine(string.Format("AwbPre:{0},AwbNo:{1}", reader["AwbPre"], reader["AwbNo"]));
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    CloseConn(conn);
                }
                Console.Read();
            }
    
    
            static OracleConnection OpenConn()
            {
                OracleConnection conn = new OracleConnection();
                conn.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=***.***.***.***)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=***)));Persist Security Info=True;User ID=***;Password=***;";
                conn.Open();
                return conn;
            }
    
            static void CloseConn(OracleConnection conn)
            {
                if (conn == null) { return; }
                try
                {
                    if (conn.State != ConnectionState.Closed)
                    {
                        conn.Close();
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
                finally
                {
                    conn.Dispose();
                }
            }
        }
    }

    **使用方法: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

  • 相关阅读:
    非阻塞式线程安全列表-ConcurrentLinkedDeque
    计数器
    Linux 查看服务器内存使用情况
    Oracle to_date, to_timestamp
    Hibernate session.flush() 使用
    阿里规约认证(题库附答案)
    多态性
    Java数据类型
    String类特点分析
    数组的定义
  • 原文地址:https://www.cnblogs.com/youguess/p/9854408.html
Copyright © 2011-2022 走看看