我一直在阅读有关如何从C#win应用程序连接到oracle数据库的信息,但是我一直在“碰壁”。我决定使用odp.net和OCI,这样客户端计算机不需要安装客户端,但是我无法使其正常工作。

我有一个小型测试应用程序,下面显示了代码,在解决方案中,我从oracle OCI中添加了以下dll:oci.dll,orannzsbb11.dll和oraociicus11.dll。它们都与最终的.exe文件放置在一起。

测试代码:

private static string CONNECTION_STRING =
                  "User Id=hr;Password=hr;Data Source=(DESCRIPTION=" +
                  "(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))" +
                  "(CONNECT_DATA=(SID=XE)));Connect Timeout=15;";

        static void Main(string[] args)
        {
            try
            {
                using (var conn = new OracleConnection(CONNECTION_STRING))
                {
                    conn.Open();
                    Console.WriteLine("Connection is: {0}", conn.State.ToString());
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }


该问题已经在using(…)语句中出现,程序只是停止工作,而我没有任何响应。我需要做些什么才能使OCI正常工作?

最佳答案

为了能够在不安装完整客户端的情况下使用ODP.NET,您需要使用Oracle Instant Client软件包(不能仅从完整的客户端复制库):


Check here以获取要求的描述。
从Oracle v10开始,我强烈建议使用EZCONNECT来简化您的连接字符串。这个怎么样:

private const string CONNECTION_STRING="User Id=hr;Password=hr;"+
   +"Data Source=127.0.0.1:1521/XE;Connect Timeout=15;";

10-08 19:23