C# 无法连接到C中的Oracle#

C# 无法连接到C中的Oracle#,c#,oracle,C#,Oracle,我正在尝试在32位控制台应用程序中连接到Oracle。我得到了以下信息。代码(主机、用户名和密码更改除外)如下所示。这是一个简单的双功能项目 任何帮助都将不胜感激 我在Visual Studion 2010 Premium和Oracle 10g中使用C#。我可以使用连接字符串中的信息集与Oracle SQL Developer连接到数据库 ---------------托斯特林-------------------------- --Oracle.DataAccess.Client.Oracl

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

任何帮助都将不胜感激

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


---------------托斯特林-------------------------- --Oracle.DataAccess.Client.OracleException位于Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32错误代码、OracleConnection连接、IntPtr opsErrCtx、OpoSqlValCtx*pOpoSqlValCtx、对象src、字符串过程) 位于Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode,Oracle 连接接头,IntPtr opsErrCtx,对象src) 在Oracle.DataAccess.Client.OracleConnection.Open()中 在c:\users\maholt\documents\visual studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs中的ConsoleApplication1.Program.GetConnection()处:第61行

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

第一,Oracle不支持.net 4.0中的10g。您必须使用11.2.0.2或更高版本才能与Oracle支持的版本兼容

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

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


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

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

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


SQL开发人员有效地使用JDBC连接。。。因此,它实际上无法与.NET中发生的情况进行比较:-(

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


在研究了一些之后,我转而使用-supportEverything,从Oracle 7.3到.NET 2中的11gR2,再到32位和64位,并提供了“直接模式选项”这意味着,如果需要,我可以运行我的应用程序,而不需要在机器上安装任何Oracle客户端…不是附属的,只是一个快乐的客户…

SQL Developer有效地使用JDBC连接…因此它与.NET中发生的情况并不具有可比性:-(

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


在研究了一些之后,我转而使用-supportEverything,从Oracle 7.3到.NET 2中的11gR2,再到32位和64位,并提供了“直接模式选项”这意味着,如果需要,我可以在计算机上不安装任何Oracle客户端的情况下运行我的应用程序…没有关联,只是一个快乐的客户…

异常消息是什么?您有一个标题,但似乎没有包含文本。消息是空的吗?异常消息是什么?您有标题,但似乎没有inc我记下了文字。留言是空白的吗?
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);
        }

    }
}