.NET使用ODP.NET连接Oracle数据库笔记

1. 开发端安装ODP.NET.下载地址:http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html

注:建议下载和服务器版本一致的odp,不然会有很多奇怪的问题.至于使用32位还是64位,我试过没有差异(服务器64位,开发机32位).

2. vs开一个console程序,引用Oracle.DataAccess.dll,至于从gac还是本地路径引用都可以.测试代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using Oracle.DataAccess.Client; //odp类必须

using Oracle.DataAccess.Types;



namespace ConsoleApplication2

{

    class Program

    {

        static void Main(string[] args)

        {

            string conString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))" +

              "(CONNECT_DATA=(SID=testdb)));User Id=dba;Password=dbb;";

            //写连接串以上2方法连接都可以,也可以放到Web.Config中。 

            OracleConnection con=new OracleConnection(conString);

            OracleCommand command =new OracleCommand();

            command.Connection = con;

            command.CommandText = "select * from T_users";//改成自己的表

            con.Open();

            OracleDataReader dr = command.ExecuteReader(); // C# 

            while (dr.Read())

            {

                Console.WriteLine(dr[0].ToString());

            }

            

            //Console.WriteLine(returnResult);





            Console.Read();

        }

    }

}

如果能正常访问数据,就证明ok了.

注:

1. 如果报错

未处理的异常: System.IO.FileNotFoundException: 未能加载文件或程序集“Oracle.Dat

aAccess, Version=2.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342”或
它的某一个依赖项。系统找不到指定的文件。

解决:说明gac或者Oracle.DataAccess引用路径异常,建议把文件copy到发布的bin目录.

2. 如果报错

未处理的异常: System.TypeInitializationException: “Oracle.DataAccess.Client.Or
acleConnection”的类型初始值设定项引发异常。 ---> Oracle.DataAccess.Client.Oracl
eException The provider is not compatible with the version of Oracle client
在 Oracle.DataAccess.Client.OracleInit.Initialize()
在 Oracle.DataAccess.Client.OracleConnection..cctor()
--- 内部异常堆栈跟踪的结尾 ---
在 Oracle.DataAccess.Client.OracleConnection..ctor(String connectionString)
在 ConsoleApplication2.Program.Main(String[] args)

解决:这说明oracle依赖的dll环境加载不正确,开发端可能安装的odp版本和服务器不一致.或者客户端缺少oracle运行的动态库.开发端建议重新安装一致版本或者重新进行oracle.dataaccess的gac配置.

3. 客户端

客户端如果不想安装odp.net,则必须在成功连接服务器的开发端的odp安装路径中复制出以下文件放到发布应用程序运行目录.

至于oracle.dataaccess.dll是否注册到客户端的gac,我测试过,都可以.

文件清单:

oci.dll

ociw32.dll

orannzsbb11.dll

oraocci11.dll

oraociei11.dll

bin\OraOps11w.dll

odp.net\x\Oracle.DataAccess.dll(x表示省略路径)

 

enjoy!

你可能感兴趣的:(oracle数据库)