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.使用代码:

     1 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 }

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

     
  • 相关阅读:
    Vscode开发工具中的Simple React Snippets插件,对React开发有哪些便捷
    函数防抖和节流
    4.怎么样用CSS实现一个loading效果
    3.常见清除浮动的
    2.css处理各种溢出
    1. css画三角形
    2.javascript中call()和apply()区别
    1.js的继承的实现方法
    css、js小技巧
    JS函数声明和函数表达式的关系
  • 原文地址:https://www.cnblogs.com/lgx5/p/12631454.html
Copyright © 2011-2022 走看看