无法在C#中连接到Oracle

我正尝试在32位控制台应用程序中连接到Oracle。 我得到以下的错误。 下面是代码(主机,用户名和密码更改除外)。 这是一个简单的双功能项目。

任何帮助将不胜感激。

我在Visual Studion 2010 Premium和Oracle 10g中使用C#。 我可以使用连接字符串中设置的信息使用Oracle SQL Developer连接到数据库。


--------------- ToString -------------------------- --Oracle.DataAccess.Client。 Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode,Oracle Connection conn,IntPtr)上的Oracle.DataAccess.Client.OracleException.HandleErrorHelper上的OracleException(Int32 errCode,OracleConnection conn,IntPtr opsErrCtx,OpoSqlValCtx * pOpoSqlValCtx,Object src,String procedure) opsErrCtx,Object src)在c: users maholt documents visual studio 2010 Projects ConsoleApplication1 ConsoleApplication1 Program.cs中的ConsoleApplication1.Program.GetConnection()上的Oracle.DataAccess.Client.OracleConnection.Open() 61

- - - - - - - -信息 - - - - - - - - - - - - - -


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Oracle.DataAccess.Client;

namespace ConsoleApplication1
{
    class Program
    {
        static OracleConnection conn;

        static void Main(string[] args)
        {
            OracleConnection connC = GetConnection();

            conn = connC;
            simpleQuery();
            Console.WriteLine("DONE");
        }

        public static void simpleQuery()
        {
            OracleCommand cmd = new OracleCommand("select count(*) as total from console.client");

            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;

            try
            {
                cmd.Connection.Open();
                OracleDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    Console.WriteLine(Convert.ToString(reader["total"]));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                cmd.Dispose();
            }
        }

        public static OracleConnection GetConnection()
        {
            Oracle.DataAccess.Client.OracleConnection rtn = null;
            try
            {
                string connstr = "Data Source=//10.10.10.10:1521/PRD2_OLTP;User Id=user; Password=pass;";

                rtn = new Oracle.DataAccess.Client.OracleConnection(connstr);

                if (rtn.State != System.Data.ConnectionState.Open)
                {
                    rtn.Open();
                }
            }
            catch (Exception ee)
            {
                Console.WriteLine("-------------------------------------------------");
                Console.WriteLine("---------------ToString--------------------------");
                Console.WriteLine("--" + ee.ToString());
                Console.WriteLine("---------------Message---------------------------");
                Console.WriteLine("--" + ee.Message);
                Console.WriteLine("-------------------------------------------------");
            }

            return (rtn);
        }

    }
}

SQL Developer有效地使用JDBC连接...所以它与.NET中发生的事情没有什么可比性:-(

关于Oracle与.NET版本的兼容性 - 我发现这相当有问题。 因为客户不总是可以根据Oracle路线图进行更新......

在研究了一些我转向使用Devart组件之后,支持.NET 7.3中的Oracle 7.3到11gR2以及32位和64位的所有内容,并提供了“直接模式选项”,这意味着如果需要的话,我可以运行我的应用程序,而无需在机器上安装的任何Oracle客户端...不隶属于,只是一个开心的客户...


首先 - Oracle不支持.net 4.0的10g。 您必须使用11.2.0.2或更高版本才能符合Oracle支持的版本。

第二 - 问题是你可能没有正确安装ODP.Net。 这可能意味着它没有安装,它被安装到第二个实例,或者它在安装过程中无法复制一个或多个文件。

我有一些关于这些项目的博客文章以及我写的一些连接测试应用程序的链接。 随意使用它们。

https://tsells.wordpress.com/category/oracle/

链接地址: http://www.djcxy.com/p/67181.html

上一篇: Cannot Connect to Oracle in C#

下一篇: ODP .NET Parameter problem with uint datatype